stm32 点亮LED
第一步:
在Drives文件夹下的BSP创建LED.c文件,先编译一下从而创建.h 文件,在.h 文件下输入如下代码 中间一段void是LED.c 文件中的头文件。
#ifndef __LED_H__
#define __LED_H__
void led_init(void);
void led1_on(void);
void led1_off(void);
void led1_toggle(void);
#endif
第二步:
编写LED.c代码,代码包含以下几个内容
1.创建初始化的结构体 用于后续传入参数
2.初始化GPIO函数(包括时钟 __HAL_RCC_GPIOB_CLK_ENABLE(); ,调用GPIO初始化函数 几种常见函数看之前文章 HAL_GPIO_Init(GPIOB,&gpio_initstruct); ,关闭LED灯)
第三步:
包含1. 打开LED灯 2. 关闭LED灯 3. 翻转LED灯 写入高低电平主要用 GPIO的 此函数HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)
用于后续函数调用
第四步:在主函数中调用函数
以下为驱动LED.c 文件中的代码 (注意包含头文件led.h和sys.h)
#include "led.h"
#include "sys.h"
//①定义初始化结构体
GPIO_InitTypeDef gpio_initstruct;
//②初始化GPIO函数
void led_init(void)
{
//打开时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //注意看硬件原理图中LED灯的引脚在哪一个组
//调用GPIO初始化函数
gpio_initstruct.Pin = GPIO_PIN_8;
gpio_initstruct.Pull = GPIO_PULLUP;
gpio_initstruct.Mode =GPIO_MODE_OUTPUT_PP;
gpio_initstruct.Speed =GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&gpio_initstruct);
//关闭LED灯
led1_off();
}
//③点亮LED1的函数
void led1_on(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); //RESET 为高电平
}
//④熄灭LED1的函数
void led1_off(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); //SET 为低电平
}
//⑤翻转LED1状态的函数
void led1_toggle(void)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
}
主函数代码 要包含 时钟 延时 LED的头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
led_init();
// led1_on();
// led1_off();
while(1)
{
led1_toggle();
delay_ms(500);
}
}
原文地址:https://blog.csdn.net/m0_65107465/article/details/143977063
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!