5.编写代码(LED闪烁)
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
/*
*由于STM32的GPIO工作模式有8种(输入4种+输出4种)
*在GPIO输出之前要先对要操作的GPIO进行配置
知识点:
一个结构体
typedef struct//结构体
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
三个函数:
1、GPIO_Init(GPIOB,&GPIO_InitTypeDef);
2、GPIO_ResetBits(GPIOB,GPIO_Pin_5); 这里的意思是给端口5高电平
3、GPIO_SetBits(GPIOB,GPIO_Pin_5); 把GPIO引脚设置低电平(红LED灯亮)
*/
//驱动程序:GPIO初始化设置
int led_gpio_init_()
{
GPIO_InitTypeDef GPIO_InitTypeDef;//定义一个结构体变量
/*使能GPIO的rcc时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
/*配置GPIO引脚*/
GPIO_InitTypeDef.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1;//使用操作符可以一次使用多个引脚,端口0是绿色 1是蓝色 5是红色
GPIO_InitTypeDef.GPIO_Speed = GPIO_Speed_50MHz;//设置输出速率50MHz
GPIO_InitTypeDef.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
/*初始化*/
GPIO_Init(GPIOB,&GPIO_InitTypeDef);//参数一选择GPIO外设(ABCDE)参数二指向GPIO_InitTypeDef的指针
}
//延时函数
void delay()
{
int i = 10000000;
while(i--);
}
//主函数
int main(void)
{
led_gpio_init_();//调用GIPO初始化函数
/*循环给高低电平实现闪烁*/
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_5);
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay();
}
}
|