[AT32F407] 【AT-START-F407测评】+从0开始点灯

[复制链接]
1096|1
 楼主| gaoyang9992006 发表于 2021-1-28 00:11 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2021-1-28 00:13 编辑

前面的创建工程过程请访问下面的帖子
https://bbs.21ic.com/icview-3068390-1-1.html
接着上面这个帖子,开始要写代码了,这里不用官方例子里做好的那种。
而是从标准库函数出发,自己点灯。 89345601190ed8e296.png
原理图显示是低电平有效,并且在PD13、PD14、PD15三个管脚上。
下面我们以点亮PD13管脚的红色LED为例码代码。

  1. #include "at32f4xx_gpio.h"

  2. /*delay variable*/
  3. static __IO uint32_t fac_us;
  4. static __IO uint32_t fac_ms;
  5. /*delay macros*/
  6. #define STEP_DELAY_MS        50
  7. void Delay_init()
  8. {
  9.   /*Config Systick*/
  10.   SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
  11.   fac_us = SystemCoreClock / (1000000U);
  12.   fac_ms = fac_us * (1000U);
  13. }

  14. void Delay_ms(u16 nms)
  15. {
  16.   u32 temp;
  17.   while(nms)
  18.   {
  19.     if(nms > STEP_DELAY_MS)
  20.     {
  21.       SysTick->LOAD = (u32)(STEP_DELAY_MS * fac_ms);
  22.       nms -= STEP_DELAY_MS;
  23.     }
  24.     else
  25.     {
  26.       SysTick->LOAD = (u32)(nms * fac_ms);
  27.       nms = 0;
  28.     }
  29.     SysTick->VAL = 0x00;
  30.     SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
  31.     do
  32.     {
  33.       temp = SysTick->CTRL;
  34.     }while( (temp & 0x01) && !(temp & (1<<16)) );

  35.     SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
  36.     SysTick->VAL = 0X00;
  37.   }
  38. }


  39. int main(void)
  40. {
  41. //LED2管脚初始化
  42.         GPIO_InitType GPIO_InitStructure;
  43.         RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD, ENABLE);
  44.         GPIO_StructInit(&GPIO_InitStructure);
  45.         GPIO_InitStructure.GPIO_Pins =GPIO_Pins_13;
  46.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
  47.         GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;        
  48.         GPIO_Init(GPIOD,&GPIO_InitStructure);
  49.         
  50.         Delay_init();
  51.         
  52.         while(1)
  53.         {
  54.                 GPIO_SetBits(GPIOD,GPIO_Pins_13);
  55.                 Delay_ms(200);
  56.                 GPIO_ResetBits(GPIOD,GPIO_Pins_13);               
  57.                 Delay_ms(200);
  58.         }
  59.         
  60. }
就这样,赤裸裸的用标准库函数点了个灯。
新手机没法转GIF图片,就不展示了。
4856011908012459.png
按照该贴开头提到的帖子开发,轻松创建工程,0错误0警告,搞定。

xuanhuanzi 发表于 2021-2-28 21:06 | 显示全部楼层
楼主真棒,没有抄例子,自己写的啊,学会了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2052

主题

16403

帖子

222

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