|
我使用以下函数将 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(); } } |
Error[Lp015]: section placement failure内容占用溢出
STM32F7由USB FS读写QSPI flash
STM8L050J3使用SWIM下载方式,无法下载,总是报错
用SDRAM刷ltdc有白线会出现是啥情况
在keil中仿真程序时,结构体变量出现错乱
什么是 GPIO 事件?如何将事件关联到外设
中断服务程序抖动
STM32L562DK探索板——如何启用蓝牙功能?
自己写驱动深入学习与调用Hal库的取舍
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
微信公众号
手机版
不能产生中断,说明配置需要改善。
如果能产生中断,也要注意,中断执行了一些代码,通常也要花时间,1us 对于很多型号的STM32来说,执行不了多少指令的。‘考虑一下用其他的方式实现吧。毕竟频繁的中断不利于程序执行。
先定时的时间加长(比如10ms)看看能不能进中断,逐步进行排查。如果还不能正常进入,需要看看配置情况。
主频才42MHz,定时1μm中断会不会时间太短了?建议参照楼上的办法,先定义1ms中断,正常执行后再逐步缩短时间进行测试。
[md]很好的排错方法