回答

收藏

[评测分享] 【免费试用】灵动Motor-DK电机控制板-LED_toggle例程分析

#板卡评测 #板卡评测 1644 人阅读 | 0 人回复 | 2023-07-20

板子上的LED是贴反的!!!
板子上的LED是贴反的!!!

板子上的LED是贴反的!!!

重要的事情讲3遍



点灯第一件事就是先分析原理图

LED引脚接在了PB9引脚上 因此我们需要操作PB9引脚翻转

首先看官方给的例程

  1. int main(void)
  2. {
  3.     PLATFORM_Init();

  4.     GPIO_LED_Toggle_Sample();

  5.     while (1)
  6.     {
  7.     }
  8. }
复制代码
PLATFORM_Init();函数
  1. void PLATFORM_Init(void)
  2. {
  3.     PLATFORM_InitDelay();

  4.     PLATFORM_InitConsole(115200);

  5.     PLATFORM_InitLED();
  6. }
复制代码
其中比较重要的就是
PLATFORM_InitLED();这句话,我们进入这个函数中



  1. void PLATFORM_InitLED(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStruct;

  4.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  5.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

  6.     GPIO_StructInit(&GPIO_InitStruct);
  7.     GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_9 | GPIO_Pin_1;
  8.     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
  9.     GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
  10.     GPIO_Init(GPIOB, &GPIO_InitStruct);

  11.     GPIO_StructInit(&GPIO_InitStruct);
  12.     GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_7 | GPIO_Pin_6;
  13.     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
  14.     GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
  15.     GPIO_Init(GPIOA, &GPIO_InitStruct);

  16.     PLATFORM_LED_Enable(LED1, ENABLE);
  17.     PLATFORM_LED_Enable(LED2, ENABLE);
  18.     PLATFORM_LED_Enable(LED3, ENABLE);
  19.     PLATFORM_LED_Enable(LED4, ENABLE);
  20. }
复制代码
首先修改引脚定义,将其重定义至PB9引脚

初始化完之后写入寄存器中

然后使能引脚

记得修改
GPIO_IO_Toggle
PLATFORM_LED_Enable


函数中的引脚,由于官方没有使用宏定义来规范引脚

导致后期移植十分繁琐


这种写法效率略微偏低

后面我会上传一份重写过的LED——Toggle代码

初始化完毕之后进去范例函数中

  1. void GPIO_LED_Toggle_Sample(void)
  2. {
  3.     printf("\r\nTest %s", __FUNCTION__);

  4.     GPIO_Configure();

  5.     while (1)
  6.     {
  7.         GPIO_IO_Toggle(GPIOB, GPIO_Pin_1);
  8.         GPIO_IO_Toggle(GPIOB, GPIO_Pin_9);
  9.         GPIO_IO_Toggle(GPIOA, GPIO_Pin_7);
  10.         GPIO_IO_Toggle(GPIOA, GPIO_Pin_6);

  11.         PLATFORM_DelayMS(100);
  12.     }
  13. }
复制代码


板子上的LED就可以欢快的亮起来了


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条