说明:
这里说明一下,STM32有很多文件,我这里上传的只是部分配置文件,不是所有的文件。
程序:
main.c文件
#include "system.h"
#include "led.h"
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,通过while循环占用CPU,达到延时功能
* 输 入 : i
* 输 出 : 无
*******************************************************************************/
void delay(u32 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
int main()
{
LED_Init(); //配置LED,相关初始化
while(1)
{
LED1=!LED1;
LED2=!LED2;
delay(6000000); //大概0.5s闪烁一次
}
}
led.h 文件
#ifndef _led_H
#define _led_H
#include "system.h"
/* LED时钟端口、引脚定义 */
#define LED1_PORT GPIOB
#define LED1_PIN GPIO_Pin_5
#define LED1_PORT_RCC RCC_APB2Periph_GPIOB
#define LED2_PORT GPIOE
#define LED2_PIN GPIO_Pin_5
#define LED2_PORT_RCC RCC_APB2Periph_GPIOE
#define LED1 PBout(5)
#define LED2 PEout(5)
void LED_Init(void);
#endif
led.c文件
#include "led.h"
/*******************************************************************************
* 函 数 名 : LED_Init
* 函数功能 : LED初始化函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
RCC_APB2PeriphClockCmd(LED1_PORT_RCC|LED2_PORT_RCC,ENABLE); //打开对应外设的时钟,这里有两个,一个GPIOB一个GPIOE
GPIO_InitStructure.GPIO_Pin=LED1_PIN; //选择你要设置的IO引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率
GPIO_Init(LED1_PORT,&GPIO_InitStructure); /* 初始化GPIO */
//GPIO_SetBits(LED1_PORT,LED1_PIN); //这个函数将LED端口拉高,熄灭所有LED
//因为前面引脚对GPIO结构体进行了设置,所以这里的输出模式、速度可以不用再配置
GPIO_InitStructure.GPIO_Pin=LED2_PIN; //选择你要设置的IO口
GPIO_Init(LED2_PORT,&GPIO_InitStructure); /* 初始化GPIO */
//GPIO_SetBits(LED2_PORT,LED2_PIN); //这个函数将LED端口拉高,熄灭所有LED
}
运行结果:
两个LED灯0.5s闪烁一次。
VID_20220411_231927
版权声明:本文为qq_55490300原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。