完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
定时器做PWM输出时,初始化定时器时执行HAL_tiM_PWM_Init( TIM1_Handler);时进入回调函数里初始化GPIO引脚;如果需要再重新初始化一次定时器时,在执行上面这行初始化时,程序并不再进入回调函数里执行,请问有没有大神知道是什么原因?谢谢!
|
|
相关推荐
2个回答
|
|
一般来讲,不要反复初始化。
你若需要再次调用HAL_TIM_PWM_Init( TIM1_Handler)做底层初始化的话,可以先将 htimx.State改为HAL_TIM_STATE_RESET。 当然,如果你不基于目前库设计流程,自行组织代码的话就没这个环节。 |
|
|
|
根据您的描述,我将分步分析可能的原因:
1. 首先,确保您使用的是正确的库和函数。在STM32 HAL库中,初始化定时器PWM输出时,应使用HAL_TIM_PWM_Init()函数。同时,确保您已经正确配置了定时器和PWM通道。 2. 其次,检查您的回调函数是否正确设置。在HAL_TIM_PWM_Init()函数中,您需要指定一个定时器回调函数,例如: ```c void TIM1_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM1) { // 您的回调函数代码 } } ``` 3. 接下来,确保您在初始化定时器时正确设置了回调函数。在HAL_TIM_PWM_Init()函数调用之前,您需要使用HAL_TIM_RegisterCallback()函数注册回调函数: ```c HAL_TIM_RegisterCallback(&htim1, HAL_TIM_PWM_PULSE_FINISHED_CB_ID, TIM1_PWM_PulseFinishedCallback); ``` 4. 如果您需要重新初始化定时器,确保在重新初始化之前,先使用HAL_TIM_DeInit()函数对定时器进行去初始化操作。这样可以确保定时器的配置被清除,然后再次使用HAL_TIM_PWM_Init()函数进行初始化。 5. 最后,检查您的代码逻辑,确保在重新初始化定时器时,没有其他代码干扰回调函数的执行。 综上所述,可能的原因包括: - 回调函数未正确设置或注册。 - 重新初始化定时器时,未先进行去初始化操作。 - 代码逻辑问题导致回调函数未被正确执行。 希望这些信息能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1090 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1107 浏览 1 评论
545 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
412 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
990 浏览 2 评论
1591浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
262浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
274浏览 3评论
245浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
238浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 07:09 , Processed in 0.652427 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号