D1 Dock Pr开发板的Button按键示例

通过学习上期教程,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 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 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[info] create bin files[2022-02-23 1601] start to sign images with key:def_otp[2022-02-23 1601] sign [prim] with [def_otp][2022-02-23 1601] rsa verify ok....[2022-02-23 1601] 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命令:
                                    lh@lh:~/.../solutions/d1_button_demo > make flashall[2022-02-15 1700] 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%lh@lh:~/.../solutions/d1_button_demo >  
04
  运行
重新上电或按下rst键,系统启动,串口会有以下打印信息,表示系统运行成功。
      ###yoc###[feb 7 2022,1148]cpu clock is 1008000000hz(cli-uart)# run lradc test
当按下对应的按键之后会有相应的打印信息输出:
  user key is pressed one times  
05
  下期预告
本文介绍了d1 dock pro开发板的按键使用示例,开发者可以通过示例代码了解按键的简单触发机制。下期内容,我们将为大家讲解d1 dock pro的led闪烁例程。欢迎大家继续关注。

运放的电源配置中是否需要负电压?在什么情况下运放需要负电压?
采用包含增益驱动级,实现了全片集成的放大器设计方案
电磁继电器吸合电压和释放电压的测量
如何采用测距传感器实现车辆之间的相对定位
如何实现5G网络精准管道?
D1 Dock Pr开发板的Button按键示例
消息称微软计划2月推出安卓双屏手机国际版
未来智能显示屏将会成为家居生活的私人健康管家
线性光耦器件HCPL-7840
物奇科技:智联网连接+安全+终端智能的单芯片方案
vivo S1 Pro仲夏梦正式开售该机配备了6GB+256GB内存售价2398元
各场景漏水远程监测软硬件一体解决方案
华为助力瑞士成功开启5G商用
MAX11041, MAX11042 有线遥控器
详细解析开关电源电路:工作原理,电路组成,电路图
甚低频(VLF)啸声信号接收器
基于增强并行口EPP的便携式高速数据采集系统
什么是功率和频率可调超声波线路板
SMT加工厂中预制焊料预制片法
FLIR彩色热视觉满足在复杂海况下引航作业需求