资深版主
- 积分
- 10541
- 金钱
- 10541
- 注册时间
- 2017-2-18
- 在线时间
- 1908 小时
|
本帖最后由 peng1554 于 2018-12-28 17:39 编辑
有网友问到F767的TIM9中断服务问题,所以就改了这个程序基于阿波罗F767板子的定时器中断实验修改
TIM9和TIM1共用了中断服务函数:TIM1_BRK_TIM9_IRQHandler()
需要注意的是:
1.定时器9(TIM9)配置为500ms中断一次,在中断里面改变DS0的状态(亮/灭)
2.中断服务程序内容写在了HAL_TIM_PeriodElapsedCallback(),该函数会被HAL_TIM_IRQHandler()调用
所以TIM1_BRK_TIM9_IRQHandler()调用了HAL_TIM_IRQHandler()
[mw_shl_code=c,true]//定时器9中断服务函数
void TIM1_BRK_TIM9_IRQHandler (void)
{
HAL_TIM_IRQHandler(&TIM9_Handler );
}
//定时器9中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&TIM9_Handler ))
{
LED0_Toggle; //LED0反转
}
}
[/mw_shl_code]
main函数如下:[mw_shl_code=c,true]int main(void)
{
Cache_Enable(); //打开L1-Cache
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
delay_init(216); //延时初始化
uart_init(115200); //串口初始化
LED_Init(); //初始化LED
TIM9_Init(10800,10000); //定时器3初始化,定时器时钟为216M,定时0.5s
while(1)
{
LED1_Toggle; //LED1翻转
delay_ms(1000);
}
}[/mw_shl_code]
|
|