開學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和E11 12 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //設定埠模式為推挽輸出13 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //選擇埠514 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO口的速度設定為2MHz15 GPIO_Init(GPIOB, &GPIO_KST); //初始化GPIOB.516 17 18 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //設定埠模式為推挽輸出19 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //選擇埠520 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO口的速度設定為2MHz21 GPIO_Init(GPIOE, &GPIO_KST); //初始化GPIOE.522 }
主程式
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埠的LED13 GPIO_SetBits(GPIOB, GPIO_Pin_5); //關閉PB5埠的LED14 delay_ms(500); //延時100ms15 GPIO_SetBits(GPIOE, GPIO_Pin_5);16 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //打開PB5埠的LED17 delay_ms(500); //延時100ms18 }19 20 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/38467.html
標籤:嵌入式
