查看: 1322|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-12 19:35
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2023-7-20 20:12:10 | 显示全部楼层 |阅读模式
    分享到:
    板子上的LED是贴反的!!!
    板子上的LED是贴反的!!!

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

    重要的事情讲3遍

    sch.png

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

    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就可以欢快的亮起来了


    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-12-28 14:53 , Processed in 0.130042 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.