硬件:指南者开发板
软件:Keil4
提示:以下内容仅适用初学者,欢迎大佬指点。
一、GPIO初始化
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
//这里端口初始化后默认是低电平,手动置高电平,防止LED提前点亮
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
二、延时函数
void delay_ms(int i)
{
int x;
for(x=0;x<i;x++);
}
三、主函数
int main(void){
GPIO_Config();
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_ms(5000);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
delay_ms(5000);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
delay_ms(5000);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
}
四、小结
以上代码可以实现一个简易的流水灯,可以观察到开发板PB0(绿灯),PB1(蓝灯),PB5(红灯)循环点亮,具体的循环时长可以通过修改延时函数参量来实现。