跑馬燈實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康呐c要求
1、熟悉GPIO的使用方法,熟悉HAL固件庫中GPIO庫函數(shù)的使用方法
2、熟悉Timer2的使用方法,熟悉HAL固件庫中通用定時(shí)器(TIM) 庫函數(shù)的使用方法
3、熟悉嵌套向量中斷控制器(NVIC),熟悉STM32固件庫中NVIC庫函數(shù)的使用方法,進(jìn)一步熟悉中斷程序編寫
二、實(shí)驗(yàn)設(shè)備
SUN ESMC01實(shí)驗(yàn)儀(含STM32F407模塊)一套、ARM仿真器一套、PC機(jī)一臺(tái)
三、實(shí)驗(yàn)內(nèi)容
1、編寫程序:控制STM32F407核心板上的4個(gè)指示燈DS1~DS4,,循環(huán)點(diǎn)亮,瞬間只有一個(gè)燈亮,使用Timer2產(chǎn)生延時(shí)。
2、觀察實(shí)驗(yàn)結(jié)果,驗(yàn)證程序是否正確。
基于延時(shí)
while (1)
{
//LED1 turned on, LED4 turned off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,GPIO_PIN_RESET);
// LED2 turned on, LED1 turned off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET);
// LED3 turned on, LED2 turned off
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_RESET);
// LD4 turned on, LD3 turned off
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,GPIO_PIN_RESET);
}
基于計(jì)時(shí)器
intmain(void)
{
int t= 0;
lighton = 0; //500mssign
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
__HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE);//清除中斷
HAL_TIM_Base_Start_IT(&htim2) ; //啟動(dòng)時(shí)鐘
while (1)
{
if (lighton)
{
lighton = 0; //500ms sign
switch(t)
{
case 0:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3, GPIO_PIN_RESET); //LED4off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_SET); //LED1 on
break;
case 1:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_RESET); //LED1off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_SET); //LED2 on
break;
case 2:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_RESET); //LED2off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_SET); //LED3 on
break;
case 3:
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_RESET); //LED3off
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3, GPIO_PIN_SET); //LED4 on
break;
}
t++;
t &= 0x3;
}
}
}
voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == &htim2)
{
lighton = 1;
}
|