通過學習上期教程,D1 Dock Pro開發板的開發環境已搭建完成,接下來我們將開始學習各項基礎功能的開發。本期我們要演示的是D1 Dock Pr開發板的Button按鍵示例,旨在帶大家通過示例代碼了解按鍵的簡單觸發機制。
01
準備工作
建議在操作前先閱讀以下技術文章:
02
示例介紹
本示例主要使用了chip_d1組件驅動組件里的LRADC。LRADC模塊屬于輸入設備,一般包括各種按鍵的實現。當用戶按下按鍵的時候會觸發中斷,可以在中斷子程序里面進行判斷當前的按鍵屬于哪種行為,可以支持多種按鍵模式的觸發。
涉及到的主要函數如下:
// 初始化lradc
lradc_status_t csi_lradc_init(void);
// 反初始化lradc
lradc_status_t csi_lradc_deinit(void);
// 注冊回調函數
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,點擊工具欄最右側的平頭哥圖標。點擊新建工程按鈕。
在搜索欄里輸入d1, 在結果里選擇d1_button_demo,點擊右側的創建工程,版本選擇v7.5.1。
3.1.2編譯
右鍵點擊d1_button_demo工程,選擇build,進行編譯,直到結束。
編譯完成后,可以在工程目錄下out文件夾里找到yoc_rtos_8M.img文件。
3.1.3下載
-
通過CDK燒寫
先連接好硬件JTAG。然后點擊紅色框框處的按鈕開始燒寫。
燒寫完畢之后,按復位鍵即可啟動。
-
通過全志工具燒寫
在沒有JTAG的情況下,只能通過全志的PhoenixSuit工具進行燒寫。將編譯出來的yoc_rtos_8M.img文件選中,
-
按住FEL按鈕,重新上電后,重啟后固件開始燒錄,直到完成。
-
如果當前鏡像支持xfex模式燒寫,直接在串口命令行執行“xfex"命令,再執行"reboot"命令進行重啟,重啟后固件開始燒錄,直到完成。
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的下載方式進行燒錄,也可以通過命令行進行燒錄。
命令行燒錄之前要先連接好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
運行
重新上電或按下RST鍵,系統啟動,串口會有以下打印信息,表示系統運行成功。
##YoC###[Feb 7 2022,1148]
cpu clock is 1008000000Hz
test Run lradc
當按下對應的按鍵之后會有相應的打印信息輸出:
user key is pressed one times
05
下期預告
本文介紹了D1 Dock Pro開發板的按鍵使用示例,開發者可以通過示例代碼了解按鍵的簡單觸發機制。下期內容,我們將為大家講解D1 Dock Pro的LED閃爍例程。歡迎大家繼續關注。
-
按鍵
+關注
關注
4文章
221瀏覽量
57394 -
開發板
+關注
關注
25文章
4560瀏覽量
94905 -
Button
+關注
關注
0文章
15瀏覽量
7524
原文標題:RISC-V大賽開發套件詳解(十):D1 Dock Pro開發板Button按鍵示例演示
文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論