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();
- }
- }
|