测试方法:实现输入按键控制和输出点亮led,输入可以控制led闪烁速度
串口可以打印出闪烁的周期。
gpio的初始化
void led_init(void){ gpio_setmode(pb, bit14, gpio_mode_output); pb14 = 1;}
//初始化按键的端口为输入模式void button_init(void){ gpio_setmode(ph, bit4, gpio_mode_input);}
实现led闪烁,并通过传入一个参数控制延时周期
void led_blink(int i){ while(i--) clk_systickdelay(100000); pb14 ^=1;}
这里使用了库函数进行延时,最小延时单元设置为0.1s,即100000us。通过传入的变量i,可以控制多少个0.1s后进行翻转。 按键输入用于控制一个变量从10到1循环变化,通过指针传入该变量的地址。
//通过按键改变一个数字从10到1的变化,用于控制led闪烁的频率。
void get_button(int *i){
if(ph4==0) { clk_systickdelay(1000); if(ph4==0) { while(ph4==0); (*i)--; if(*i《=0) *i=10; printf(“i=%d t=%.2f s
”,*i,(float)*i/5); } }}
每次完成一次变量改变后,打印出变量值和当前对应的周期。代码实现了松手检测,按下后,先延时确认是否真的按下,如果是按下了,那么等待松手,松手后进行变量的减一操作,然后判断变量是否循环到0,然后主函数调用他们。
int32_t main(void){int i=10; /* init system, ip clock and multi-function i/o. */ sys_init();
/* init uart0 for printf */ uart0_init();
printf(“
cpu [url=home.php?mod=space&uid=72445]@[/url] %dhz
”, systemcoreclock);
printf(“+-------------------------------------------------+
”); printf(“| pb.14(output) and pch.4(input) sample code |
”); printf(“+-------------------------------------------------+
”);
led_init(); button_init();
while(1) { led_blink(i); get_button(&i); }}
00_led.rar (746.17 kb,)
最后串口打印的效果如下,完整的工程看附件,可以放到
m471_series_bsp_cmsis_v3.00.000samplecodestddriver
这个目录下,因为我是用gpio的例子复制了一份,修改的。
一种用于测量单细胞瞬态响应的封闭式微流控芯片
小米6发布时间确定:时间有了,那小米6配置呢?
Xilinx 积极拥抱“新基建”,持续发力大中华区核心市场
魅族16th搭载骁龙845移动平台,采用AI双摄,可让拍照体验更加出色
Vishay推出基于PLCC-2和超小尺寸MiniLED封装的新款汽车级电源指示LED
最新M471K系列单片机开发板测试
浅析软包电池优缺点及锂电池模组的压力
科创板澜起科技董事Brent Alexander Young介绍、履历信息
扩展MAX9930在CATV应用的功能
方方面面话笔记本电池(二)
芯片制造行业现状
485扩展分布式IO模块
手机有种美叫华为荣耀8,惊艳不止是第一眼
索喜科技携驾舱一体化解决方案分享智能驾舱之道
发电机中性接地电阻柜的介绍
喝水机器人的制作
Linux的I2C驱动架构
手机指纹识别原理,手机指纹解锁什么原理
功率MOSFET设计–功耗计算
如何去检测电解电容是否完好,简单方法的介绍