一、實驗目的
通過控制戰(zhàn)艦STM32開發(fā)板上的兩個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);
}
}
五、實驗結果
成功!