测试方法:实现输入按键控制和输出点亮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的例子复制了一份,修改的。
责任编辑:haq
-
led
+关注
关注
242文章
23295浏览量
661260 -
单片机
+关注
关注
6037文章
44563浏览量
635864
原文标题:最新M471K系列单片机开发板测评:测试GPIO和串口
文章出处:【微信号:pcbgood,微信公众号:奈因PCB电路板设计】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论