最新M471K系列单片机开发板测试

描述

  测试方法:实现输入按键控制和输出点亮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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分