开学STM32
跑马灯的实验主要就是了解GPIO口的配置及使用,我这里是使用库函数进行编程,主要需要设置以下两方面:
1、使能需要使用的IO口的时钟,一共有A、B、C、D、E、F、G七组IO口
2、初始化IO口(设置IO口的端口号(有GPIO_Pin_0 ~ GPIO_Pin_15,共16个IO端口)、设置IO口的输出速度、设置IO口的工作模式)
代码如下
1 //端口初始化 2 #include "led.h" 3 #include "stm32f10x.h" 4 5 void LED_Init(void) 6 { 7 GPIO_InitTypeDef GPIO_KST; 8 9 10 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能端口B和E 11 12 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端口模式为推挽输出 13 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端口5 14 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO口的速度设置为2MHz 15 GPIO_Init(GPIOB, &GPIO_KST); //初始化GPIOB.5 16 17 18 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端口模式为推挽输出 19 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端口5 20 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO口的速度设置为2MHz 21 GPIO_Init(GPIOE, &GPIO_KST); //初始化GPIOE.5 22 }
主程序
1 //主程序 2 #include "sys.h" 3 #include "delay.h" 4 #include "led.h" 5 6 int main(void) 7 { 8 delay_init(); //延时初始化 9 LED_Init(); //LED初始化 10 while(1) 11 { 12 GPIO_ResetBits(GPIOE, GPIO_Pin_5); //关闭PE5端口的LED 13 GPIO_SetBits(GPIOB, GPIO_Pin_5); //关闭PB5端口的LED 14 delay_ms(500); //延时100ms 15 GPIO_SetBits(GPIOE, GPIO_Pin_5); 16 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //打开PB5端口的LED 17 delay_ms(500); //延时100ms 18 } 19 20 }