[DemoCode下载] 最新M471K系列单片机开发板测评:测试GPIO和串口

[复制链接]
8829|30
 楼主| gaoyang9992006 发表于 2021-8-12 23:17 | 显示全部楼层 |阅读模式
测试方法:实现输入按键控制和输出点亮LED,输入可以控制LED闪烁速度
串口可以打印出闪烁的周期。
GPIO的初始化
  1. void led_init(void)
  2. {
  3.         GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
  4.         PB14 = 1;
  5. }

  6. //初始化按键的端口为输入模式
  7. void button_init(void)
  8. {
  9.         GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
  10. }
实现LED闪烁,并通过传入一个参数控制延时周期
  1. void led_blink(int i)
  2. {
  3.         while(i--)
  4.                 CLK_SysTickDelay(100000);
  5.                 PB14 ^=1;
  6. }
这里使用了库函数进行延时,最小延时单元设置为0.1s,即100000us
通过传入的变量i,可以控制多少个0.1s后进行翻转。

按键输入用于控制一个变量从10到1循环变化,通过指针传入该变量的地址
  1. //通过按键改变一个数字从10到1的变化,用于控制LED闪烁的频率。
  2. void get_button(int *i)
  3. {
  4.         if(PH4==0)
  5.         {
  6.                 CLK_SysTickDelay(1000);
  7.                 if(PH4==0)
  8.                 {
  9.                         while(PH4==0);
  10.                         (*i)--;
  11.                         if(*i<=0) *i=10;
  12.                         printf("i=%d                T=%.2f s \n",*i,(float)*i/5);
  13.                 }
  14.         }
  15. }
每次完成一次变量改变后,打印出变量值和当前对应的周期。代码实现了松手检测,按下后,先延时确认是否真的按下,如果是按下了,那么等待松手,松手后进行变量的减一操作,然后判断变量是否循环到0
然后主函数调用他们
  1. int32_t main(void)
  2. {
  3. int i=10;
  4.         /* Init System, IP clock and multi-function I/O. */
  5.         SYS_Init();

  6.         /* Init UART0 for printf */
  7.         UART0_Init();

  8.         printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);

  9.         printf("+-------------------------------------------------+\n");
  10.         printf("|    PB.14(Output) and PCH.4(Input) Sample Code     |\n");
  11.         printf("+-------------------------------------------------+\n\n");
  12.        
  13.         led_init();
  14.         button_init();

  15.         while(1)
  16.         {
  17.                 led_blink(i);
  18.                 get_button(&i);               
  19.         }
  20. }
00_LED.rar (746.17 KB, 下载次数: 3)
最后串口打印的效果如下,完整的工程看附件,可以放到
M471_Series_BSP_CMSIS_V3.00.000\SampleCode\StdDriver
这个目录下,因为我是用GPIO的例子复制了一份,修改的。
4606661153acc36f84.png
Sunriver_Yao 发表于 2021-8-16 14:41 | 显示全部楼层
终于清晰明了。不错!
周建华123 发表于 2021-8-16 16:19 | 显示全部楼层
66666 赞
laocuo1142 发表于 2021-8-16 19:02 来自手机 | 显示全部楼层
很好的干货哟
labasi 发表于 2021-9-10 14:05 | 显示全部楼层
这个系列是什么时候出的呀请问
paotangsan 发表于 2021-9-10 14:06 | 显示全部楼层
这个容易上手吗
renzheshengui 发表于 2021-9-10 15:01 | 显示全部楼层
现在入手途径有啥啊
wakayi 发表于 2021-9-10 15:04 | 显示全部楼层
代码风格非常好啊
wowu 发表于 2021-9-10 15:11 | 显示全部楼层
比较容易上手的小例程
jiekou001 发表于 2023-1-12 16:05 | 显示全部楼层
简单的点个灯,也说明新唐的库函数非常容易上手。
643757107 发表于 2023-1-12 17:19 | 显示全部楼层
^=1的操作是什么操作
643757107 发表于 2023-1-12 17:21 | 显示全部楼层
中国龙芯CDX 发表于 2023-1-12 20:12 | 显示全部楼层
非常的清晰明白,很好
szt1993 发表于 2023-1-12 20:22 | 显示全部楼层

真值表是数电学习时必要的练习过程,异或等等运算,挺经典的
OKAKAKO 发表于 2023-1-13 19:07 来自手机 | 显示全部楼层
很清晰明白,容易搞懂
643757107 发表于 2023-2-7 14:13 | 显示全部楼层
原来调整一个参数可以这么做。
AdaMaYun 发表于 2023-2-7 15:24 | 显示全部楼层
新唐的库函数挺容易上手,很明白了
小灵通2018 发表于 2023-2-7 17:24 | 显示全部楼层
这个按键控制闪烁频率方法新颖。
updownq 发表于 2023-4-16 21:54 | 显示全部楼层
M471K 系列单片机是 Nuvoton 公司推出的一款基于 Arm Cortex-M4 内核的高性能单片机,适用于智能家居、工业自动化、电气控制等领域。
beacherblack 发表于 2023-4-17 18:06 | 显示全部楼层
开发板还支持在线下载和调试,并提供了丰富的示例程序和软件库,为开发者提供了便利和支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部