打印
[STM32F1]

STM32F103ZET6【标准库函数开发】--点亮LED

[复制链接]
461|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.硬件连接


2.设计思路
要点亮LED0和LED1就要把PB5和PE5设置为低电平;
要熄灭LED0和LED1就要把PB5和PE5设置为高电平;


3.知识储备:STM32有四种输出模式和四种输入模式


4.编写代码
4.1方便阅读,宏定义
#define LED0 PBout(5)// 宏定义LED0为GPIOB.5输出
#define LED1 PEout(5)// 宏定义LED1为GPIOE.5输出
void LED_Init(void);//初始化


4.2IO初始化(时钟使能、配置输入、选择io口、配置速度、高低电平初始化等)
//LED.C    
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;        
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);         //使能PB,PE端口时钟
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 输出高

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                             //LED1-->PE.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure);                                           //根据设定参数初始化GPIOE.5
GPIO_SetBits(GPIOE,GPIO_Pin_5);                                                  //PE.5 输出高
}


4.3编写主函数
//主函数
int main(void)
{       
        delay_init();            //延时函数初始化          
        LED_Init();                          //初始化与LED连接的硬件接口
        while(1)
        {
                LED0=0;//点亮LED0
                LED1=1;//熄灭LED1
                delay_ms(300);         //延时300ms
                LED0=1;//熄灭LED0
                LED1=0;//点亮LED1
                delay_ms(300);        //延时300ms
        }
}
上面的函数就可以让LED0,LED1持续的闪烁,在while(1)里面循环下去。

使用特权

评论回复
沙发
捉虫天师| | 2020-11-4 21:30 | 只看该作者
标准库挺好用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝