開學STM32 跑馬燈的實驗主要就是瞭解GPIO口的配置及使用,我這裡是使用庫函數進行編程,主要需要設置以下兩方面: 1、使能需要使用的IO口的時鐘,一共有A、B、C、D、E、F、G七組IO口 2、初始化IO口(設置IO口的埠號(有GPIO_Pin_0 ~ GPIO_Pin_15,共16個IO埠 ...
開學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 }