单片机学习小组
直播中

李娟

7年用户 1289经验值
私信 关注

如何利用STM32CubeMX点亮LED灯?

如何利用STM32CubeMX点亮LED灯?

回帖(1)

h1654155275.5669

2022-2-8 15:58:36
1、准备开发板

这里我选用了一块网红开发板:”小熊派“,这款板子的人气比较高,还是全国大学生物联网设计竞赛(华为杯)的华为竞赛开发板,我个人也比较喜欢用这款板子,这款板子在放在纸箱吃灰半年之后,被我重新拿了起来,并想借此写博客的机会,整理一下自己的代码。
开发板功能区分布图

开发板俯视图
外设引脚对应表
[tr]MCU引脚引脚标注名[/tr]
PC13LED
LED原理图

2、STM32CubeMX生成代码


搜索并选择芯片型号


配置系统时钟


配置时钟树

STM32L4的最高主频可达到80M,最后使HCLK = 80Mhz即可:


配置GPIO引脚


修改引脚的用户标签(相当于取另一个新名字)

生成工程设置


代码生成配置


生成代码


生成成功



3、在MDK中编写代码
在gpio.h的用户代码区编写以下代码:


/* USER CODE BEGIN Includes */
typedef enum
{
   
        LED_OFF = 0,
        LED_ON,
        LED_Toggle
        
} LED_ENUM;
/* USER CODE END Includes */


/* USER CODE BEGIN Private defines */
#define LED_Set(status) status != LED_Toggle ? HAL_GPIO_WritePin( LED_GPIO_Port, LED_Pin, status != LED_ON ? GPIO_PIN_RESET : GPIO_PIN_SET): HAL_GPIO_TogglePin( LED_GPIO_Port, LED_Pin);        //利用define可以美化和简短我们的代码,知识点就用到了三目运算符的嵌套判断。
/* USER CODE END Private defines */


在main.c中的main函数中编写以下代码


while (1)
{  
    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */
               
    LED_Set(LED_Toggle);        //翻转LED
    HAL_Delay(1000);                //延时1秒


/*   下面的代码等效于上面的代码  */
//          LED_Set(LED_ON);                //点亮LED
//          HAL_Delay(1000);                //延时1秒
//          LED_Set(LED_OFF);                //熄灭LED
//          HAL_Delay(1000);                //延时1秒
       
}
  /* USER CODE END 3 */


4、配置烧录器



5、烧录代码


6、实验现象

控制LED小灯每1秒钟闪烁一次。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分