电子说
通过学习上期教程,D1 Dock Pro开发板的开发环境已搭建完成,接下来我们将开始学习各项基础功能的开发。本期我们要演示的是D1 Dock Pr开发板的Button按键示例,旨在带大家通过示例代码了解按键的简单触发机制。
01
准备工作
建议在操作前先阅读以下技术文章:
02
示例介绍
本示例主要使用了chip_d1组件驱动组件里的LRADC。LRADC模块属于输入设备,一般包括各种按键的实现。当用户按下按键的时候会触发中断,可以在中断子程序里面进行判断当前的按键属于哪种行为,可以支持多种按键模式的触发。
涉及到的主要函数如下:
// 初始化lradclradc_status_t csi_lradc_init(void);// 反初始化lradclradc_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 timesif (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 testdocker-ubuntu18:~$ cd testdocker-ubuntu18:~$ yoc initdocker-ubuntu18:~$ yoc install sdk_app_d1 -b v7.5.1Start 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$ lsboards components solutions
3.2.2 编译
docker-ubuntu18:~/test/solutions$ cd d1_button_demodocker-ubuntu18:~/test/solutions/d1_button_demo$ make…… (省略) ……LINK out/d1_button_demo/yoc.elfriscv64-unknown-elf-objdump -d out/d1_button_demo/yoc.elf > yoc.asmINSTALL yoc.elfGenerating yoc.binscons: 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, boot0gpt, 0, 0, 0x0000c000, 0x00004000, 0x00010000, gptboot, 0, 0, 0x00010000, 0x00025000, 0x00035000, bootimtb, 0, 0, 0x00035000, 0x00002000, 0x00037000, imtbprim, 1, 0, 0x00037000, 0x00360000, 0x00397000, primlfs, 0, 0, 0x00397000, 0x00452000, 0x007e9000misc, 0, 0, 0x007e9000, 0x00013000, 0x007fc000kv, 0, 0, 0x007fc000, 0x00004000, 0x00800000boot0, 49152 bytesgpt, 8192 bytesboot, 143896 bytesprim, 131228 bytesimtb, 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 flashall1700] I am RISC-VProgram partition: boot0 address: 0x0, size 49152 byteerasing...program 00x0000c000, 100%Program partition: gpt address: 0xc000, size 8192 byteerasing...program 00x0000e000, 100%Program partition: boot address: 0x10000, size 142980 byteerasing...program 0x00032000, 100%Program partition: imtb address: 0x35000, size 8192 byteerasing...program 00x00037000, 100%Program partition: prim address: 0x37000, size 131072 byteerasing...program 00x00057000, 100%:~/.../solutions/d1_button_demo >
04
运行
重新上电或按下RST键,系统启动,串口会有以下打印信息,表示系统运行成功。
##YoC###[Feb 7 2022,1148]cpu clock is 1008000000HzRun lradc test

当按下对应的按键之后会有相应的打印信息输出:
user key is pressed one times
05
下期预告
本文介绍了D1 Dock Pro开发板的按键使用示例,开发者可以通过示例代码了解按键的简单触发机制。下期内容,我们将为大家讲解D1 Dock Pro的LED闪烁例程。欢迎大家继续关注。
全部0条评论
快来发表一下你的评论吧 !