间隔一秒亮灭,仿真时注意要在__HAL_RCC_TIM2_CLK_ENABLE()之前使能TIM1的时钟,否则特别慢,可能是Proteus的BUG吧,在此感谢51hei论坛的happy87,是他的无私奉献才在这一块有所突破,非常感谢!这里是happy87的原贴:http://www.51hei.com/bbs/dpj-131825-1.html
STM32单片机定时器Proteus仿真原理图如下(仿真工程文件可到本帖附件中下载)
自己仅在两个地方加了代码,下面加粗的即是:
1、main函数里面
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- __HAL_RCC_TIM1_CLK_ENABLE();//使能TIM1时钟,实际不需要,仅是Protues的BUG,可以放置在调用__HAL_RCC_TIM2_CLK_ENABLE()之前的任意位置
- MX_GPIO_Init();
- MX_TIM2_Init();
-
- HAL_TIM_Base_Start_IT(&htim2);
- while (1)
- {
- }
- }
复制代码
2、重写回调函数
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim)
- {
- if(htim == &htim2)
- HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);//端口翻转
- }
复制代码
全部资料51hei下载地址:
TIME-LED.rar
(4.02 MB, 下载次数: 81)
|