【实验一】跑马灯实验
扫描二维码
随时随地手机看文章
一、实验目的
通过控制战舰STM32开发板上的两个LED灯:DS0和DS1交替闪烁,实现类似跑马灯的效果。
二、STM32 IO简介
STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH; 2 个 32 位的数据寄存器 IDR 和 ODR; 1 个 32
位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR; 1 个 32 位的锁存寄存器 LCKR。
8种模式:
1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏复用功能
IO 操作步骤:
1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。
2) 初始化 IO 参数。调用函数 GPIO_Init()。
3) 操作 IO。
三、硬件设计
硬件只有 LED( DS0 和 DS1);DS0 接 PB5, DS1 接 PE5。
四、软件设计
1)使用到的固件库文件
stm32f10x_gpio.c/stm32f10x_gpio.h
stm32f10x_rcc.c/stm32f10x_rcc.h
misc.c/misc.h
stm32f10x_usart/stm32f10x_usart.h
led.c 文件
voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);//使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED0-->PB.5端口配置
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MHz
GPIO_Init(GPIOB,&GPIO_InitStructure);//根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB.5输出高
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED1-->PE.5端口配置,推挽输出
GPIO_Init(GPIOE,&GPIO_InitStructure);//推挽输出,IO口速度为50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE.5输出高
}
main.c文件
intmain(void)
{
delay_init();
LED_Init();
while(1)
{
LED0=0;
LED1=1;
delay_ms(300);
LED0=1;
LED1=0;
delay_ms(300);
}
}
五、实验结果
成功!