嵌入式02 STM32 实验01跑马灯

开学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 }

猜你喜欢

转载自www.cnblogs.com/ksht-wdyx/p/11594531.html