|
我使用以下函数将 TIM5 配置为每 1μs 触发一次,APB1 总线频率 42MHz, 并希望 HAL_TIM_PeriodElapsedCallback() 每 1μs 被调用一次,但实际并未生效。 请问如何确保回调函数能正常触发? 我的初始化函数: static void manual_TIM5_Init(void) { __HAL_RCC_TIM5_CLK_ENABLE(); // 使能 Timer5 时钟 TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim5.Instance = TIM5; htim5.Init.Prescaler = 1; htim5.Init.CounterMode = TIM_COUNTERMODE_UP; htim5.Init.Period = 20; htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim5) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK) { Error_Handler(); } } |
STM32 上同时跑 LWIP 的 TCP 与 UDP 连接
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
使用 HAL 库通过串口以 ASCII 形式发送整型数据
USB Host 外部中断按键失效
调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler
STM32 增加 WiFi + 以太网的低成本方案
NUCLEO G474RE无法运行程序
STM32F407VGT6 开发板Beak at address "0x0" with no debug information our outside
BootLoader 与 DFU 模式的区别
调度器原子变量相关问题
微信公众号
手机版
不能产生中断,说明配置需要改善。
如果能产生中断,也要注意,中断执行了一些代码,通常也要花时间,1us 对于很多型号的STM32来说,执行不了多少指令的。‘考虑一下用其他的方式实现吧。毕竟频繁的中断不利于程序执行。
先定时的时间加长(比如10ms)看看能不能进中断,逐步进行排查。如果还不能正常进入,需要看看配置情况。
主频才42MHz,定时1μm中断会不会时间太短了?建议参照楼上的办法,先定义1ms中断,正常执行后再逐步缩短时间进行测试。
[md]很好的排错方法