【實(shí)驗(yàn)一】跑馬燈實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康?/p>
通過(guò)控制戰(zhàn)艦STM32開(kāi)發(fā)板上的兩個(gè)LED燈:DS0和DS1交替閃爍,實(shí)現(xiàn)類似跑馬燈的效果。
二、STM32 IO簡(jiǎn)介
STM32 的每個(gè) IO 端口都有 7 個(gè)寄存器來(lái)控制。他們分別是:配置模式的 2 個(gè) 32 位的端口配置寄存器 CRL 和 CRH; 2 個(gè) 32 位的數(shù)據(jù)寄存器 IDR 和 ODR; 1 個(gè) 32
位的置位/復(fù)位寄存器BSRR;一個(gè) 16 位的復(fù)位寄存器 BRR; 1 個(gè) 32 位的鎖存寄存器 LCKR。
8種模式:
1、 輸入浮空
2、 輸入上拉
3、 輸入下拉
4、 模擬輸入
5、 開(kāi)漏輸出
6、 推挽輸出
7、 推挽式復(fù)用功能
8、 開(kāi)漏復(fù)用功能
IO 操作步驟:
1) 使能 IO 口時(shí)鐘。調(diào)用函數(shù)為 RCC_APB2PeriphClockCmd()。
2) 初始化 IO 參數(shù)。調(diào)用函數(shù) GPIO_Init()。
3) 操作 IO。
三、硬件設(shè)計(jì)
硬件只有 LED( DS0 和 DS1);DS0 接 PB5, DS1 接 PE5。
四、軟件設(shè)計(jì)
1)使用到的固件庫(kù)文件
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端口時(shí)鐘
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);//根據(jù)設(shè)定參數(shù)初始化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);
}
}
五、實(shí)驗(yàn)結(jié)果
成功!