通過學(xué)習(xí)上期教程,D1 Dock Pro開發(fā)板的開發(fā)環(huán)境已搭建完成,接下來我們將開始學(xué)習(xí)各項(xiàng)基礎(chǔ)功能的開發(fā)。本期我們要演示的是D1 Dock Pr開發(fā)板的Button按鍵示例,旨在帶大家通過示例代碼了解按鍵的簡單觸發(fā)機(jī)制。
01
準(zhǔn)備工作
建議在操作前先閱讀以下技術(shù)文章:
02
示例介紹
本示例主要使用了chip_d1組件驅(qū)動組件里的LRADC。LRADC模塊屬于輸入設(shè)備,一般包括各種按鍵的實(shí)現(xiàn)。當(dāng)用戶按下按鍵的時候會觸發(fā)中斷,可以在中斷子程序里面進(jìn)行判斷當(dāng)前的按鍵屬于哪種行為,可以支持多種按鍵模式的觸發(fā)。
涉及到的主要函數(shù)如下:
// 初始化lradc
lradc_status_t csi_lradc_init(void);
// 反初始化lradc
lradc_status_t csi_lradc_deinit(void);
// 注冊回調(diào)函數(shù)
lradc_status_t csi_lradc_register_callback(lradc_callback_t callback);
具體使用如下:
static void lradc_irq_callback(uint32_t irq_status, uint32_t data)
{
// Here, we only catpure key button's up IRQ to confirm user press key one times
if (irq_status & LRADC_ADC0_UPPEND) {
printf("user key is pressed one times ");
}
}
static int test_lradc(void)
{
int ret = -1;
printf("Run lradc test ");
ret = csi_lradc_init();
if (ret) {
printf("lradc init failed! ");
return -1;
}
csi_lradc_register_callback(lradc_irq_callback);
return 0;
}
03
示例演示
3.1劍池CDK(以下簡稱CDK)演示
3.1.1示例獲取
雙擊打開CDK,點(diǎn)擊工具欄最右側(cè)的平頭哥圖標(biāo)。點(diǎn)擊新建工程按鈕。

在搜索欄里輸入d1, 在結(jié)果里選擇d1_button_demo,點(diǎn)擊右側(cè)的創(chuàng)建工程,版本選擇v7.5.1。

3.1.2編譯
右鍵點(diǎn)擊d1_button_demo工程,選擇build,進(jìn)行編譯,直到結(jié)束。

編譯完成后,可以在工程目錄下out文件夾里找到y(tǒng)oc_rtos_8M.img文件。
3.1.3下載
-
通過CDK燒寫
先連接好硬件JTAG。然后點(diǎn)擊紅色框框處的按鈕開始燒寫。


燒寫完畢之后,按復(fù)位鍵即可啟動。
-
通過全志工具燒寫
在沒有JTAG的情況下,只能通過全志的PhoenixSuit工具進(jìn)行燒寫。將編譯出來的yoc_rtos_8M.img文件選中,

-
按住FEL按鈕,重新上電后,重啟后固件開始燒錄,直到完成。
-
如果當(dāng)前鏡像支持xfex模式燒寫,直接在串口命令行執(zhí)行“xfex"命令,再執(zhí)行"reboot"命令進(jìn)行重啟,重啟后固件開始燒錄,直到完成。
3.2命令行演示
3.2.1示例獲取
docker-ubuntu18:~$ mkdir test
docker-ubuntu18:~$ cd test
docker-ubuntu18:~$ yoc init
docker-ubuntu18:~$ yoc install sdk_app_d1 -b v7.5.1
Start to install components...
sdk_app_d1 (v7.5.1), clone https://gitee.com/yocop/sdk_app_d1.git ...
…… (省略) ……
d1_evb (v7.5.1), clone https://gitee.com/yocop/d1_evb.git ...
chip_d1 (v7.5.1), clone https://gitee.com/yocop/chip_d1.git ...
Download components finish.
docker-ubuntu18:~/test$ ls
boards components solutions
3.2.2編譯
docker-ubuntu18:~/test/solutions$ cd d1_button_demo
docker-ubuntu18:~/test/solutions/d1_button_demo$ make
…… (省略) ……
LINK out/d1_button_demo/yoc.elf
riscv64-unknown-elf-objdump -d out/d1_button_demo/yoc.elf > yoc.asm
INSTALL yoc.elf
Generating yoc.bin
scons: done building targets.
YoC SDK Done
[ ] Create bin files
[ ] Start to sign images with key:def_otp
[ ] Sign [prim] with [def_otp]
[rsa verify ok.... ]
[ ] Sign prim ok.
----------------------------------------------------------------
boot0, 0, 0, 0x00000000, 0x0000c000, 0x0000c000, boot0
gpt, 0, 0, 0x0000c000, 0x00004000, 0x00010000, gpt
boot, 0, 0, 0x00010000, 0x00025000, 0x00035000, boot
imtb, 0, 0, 0x00035000, 0x00002000, 0x00037000, imtb
prim, 1, 0, 0x00037000, 0x00360000, 0x00397000, prim
lfs, 0, 0, 0x00397000, 0x00452000, 0x007e9000
misc, 0, 0, 0x007e9000, 0x00013000, 0x007fc000
kv, 0, 0, 0x007fc000, 0x00004000, 0x00800000
boot0, 49152 bytes
gpt, 8192 bytes
boot, 143896 bytes
prim, 131228 bytes
imtb, 8192 bytes
----------------------------------------------------------------
Create yoc_rtos_8M.img in out directory Success!
3.2.3下載
可以通過3.1.3的下載方式進(jìn)行燒錄,也可以通過命令行進(jìn)行燒錄。
命令行燒錄之前要先連接好T-HeadDebugServer。然后在終端輸入make flashall命令:
~/.../solutions/d1_button_demo > make flashall :
1700] I am RISC-V
Program partition: boot0 address: 0x0, size 49152 byte
erasing...
program 00x0000c000, 100%
Program partition: gpt address: 0xc000, size 8192 byte
erasing...
program 00x0000e000, 100%
Program partition: boot address: 0x10000, size 142980 byte
erasing...
program 0x00032000, 100%
Program partition: imtb address: 0x35000, size 8192 byte
erasing...
program 00x00037000, 100%
Program partition: prim address: 0x37000, size 131072 byte
erasing...
program 00x00057000, 100%
~/.../solutions/d1_button_demo > :
04
運(yùn)行
重新上電或按下RST鍵,系統(tǒng)啟動,串口會有以下打印信息,表示系統(tǒng)運(yùn)行成功。
##YoC###[Feb 7 2022,1148]
cpu clock is 1008000000Hz
test Run lradc

當(dāng)按下對應(yīng)的按鍵之后會有相應(yīng)的打印信息輸出:
user key is pressed one times
05
下期預(yù)告
本文介紹了D1 Dock Pro開發(fā)板的按鍵使用示例,開發(fā)者可以通過示例代碼了解按鍵的簡單觸發(fā)機(jī)制。下期內(nèi)容,我們將為大家講解D1 Dock Pro的LED閃爍例程。歡迎大家繼續(xù)關(guān)注。
-
按鍵
+關(guān)注
關(guān)注
4文章
227瀏覽量
57931 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5499瀏覽量
102108 -
Button
+關(guān)注
關(guān)注
0文章
16瀏覽量
7771
原文標(biāo)題:RISC-V大賽開發(fā)套件詳解(十):D1 Dock Pro開發(fā)板Button按鍵示例演示
文章出處:【微信號:芯片開放社區(qū),微信公眾號:芯片開放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
平頭哥D1 DocK Pro開發(fā)板上手評測

如何在D1哪吒開發(fā)板商適配或者移植阿里小程序呢
Wemos D1 mini 開發(fā)板介紹
「哪吒開發(fā)板」用Rust 探索RISC-V主板D1之GPIO

符合Open Board規(guī)范的首款開發(fā)板全志科技D1哪吒開始正式發(fā)售
全志D1哪吒 RISCV64開發(fā)板上手評測

全志D1芯片的啟動流程最底層分析
Wemos D1 mini開發(fā)板初用

Lichee RV Dock開發(fā)及使用方法
【Sipeed M2 Dock開發(fā)板試用體驗(yàn)】HELLOWORLD

評論