本文是关于开发者 乘简 基于bl606p-dvk开发板实战开发的系列文章中的第五篇,主要介绍了can扩展模块收发测试!
01 硬件部分
bl606p的按键板上有5个按键,但只用到了1个gpio16,其原理采用的是adc采集的方法实现的,但不支持同时按住两个及以上键的功能!
代码如下:
main.c
#include #include #include #include #include app_main.h#include bl606p_adckeys.hint main(int argc, char *argv[]){ uint16_t t=0; board_yoc_init(); adckey_init(); printf(app start core clock %d........, soc_get_cur_cpu_freq()); while(1) { t=getkey(); if(t!=key_no){ logd(info, /* %d */, t); } } codec_output_init(); codec_input_init(); codec_loop_init(); return 0;} bl606p_adckeys.h
#ifndef _bl606p_adckeys_h_#define _bl606p_adckeys_h_#include #include #include #define k4 0#define k3 1#define k6 4#define k5 6#define k7 8#define key_no 10void adckey_init();uint16_t getkey();#endifbl606p_adckeys.c#include bl606p_adckeys.hadc_dev_t adc;void adckey_init(){ csi_pin_set_mux(gpio_pin_16, gpio16_adc_ch8); adc.port = 8; adc.config.sampling_cycle = 100; hal_adc_init(&adc);}uint16_t getkey(){ #define keycs 10//持续按多久算有效按键,这里如果改成5的话,则有个按键9也是有效按键了,改成10则无问题 uint32_t value; uint16_t k=0; static uint16_t bk=key_no,i=0; hal_adc_value_get(&adc, &value, hal_wait_forever); k = (value & 0xffff)/1000; if(kkeycs)i=keycs;//在按键松开之前,防止计数溢出 } } else bk=key_no; return key_no;} 下载的时候,需要把gpio16的跳线帽插回去,程序下载完后,把路线帽插到右边,串口输出中才会出现正确的结果,但有时即使还原了跳线帽也无法下载程序,所以要按住boot键不放,再按一下rst键,再松开boot键才能正常下载程序。
花千元买大牌手机配低价路由器,跟花大钱买iPhone只买16G一样无奈
日本便利店AI防盗窃,科技预测犯罪正在成为现实
电动全景摄影工具的制作
电子镇流器式荧光灯,电子镇流器式荧光灯原理
D类音频放大器节省电池寿命-Class D Audio Am
基于BL606P-DVK音视频开发板的实战案例
MAX1763升压型DC/DC转换器
小型农业气象监测站能保障农作物的生长安全
iPhone本季度销量或达7800万部 助苹果打破营收纪录
轻质光伏系统的十大核心痛点盘点分析
角度传感器用例:电动自行车
为什么网工独爱CRT这款连接工具?
中国科技大学在高维量子通信研究中取得重要进展
自动化三维检测设备CASAIM IS铸造件三维尺寸自动测量
选择用超声波清洗的一个原因有哪些?
vivo在2019年都推出了哪些5G机型
摩托罗拉推出折叠手机_Razr再现?
Debrief的区块链基础架构是怎样构成的?
2016资本谨慎布局VR 行业洗牌悄然来临
米拿下了全平台安卓手机销量第一的位置