随笔 - 22,  文章 - 0,  评论 - 2,  阅读 - 3287

遇见很多无厘头的问题让人实在头疼

本来自己画一款控制板,开心焊接完后发现stlink用不了,本来之前一直使用usb typeC接口下载程序,后续因为特殊需求修改为只有stlink接口,但是发现用不来,不论如何修改stm32 cubeprogrammer都无法连接,一直出现no stm32 target found。
试过的方法有长按复位,长按boot, 下载状态长按复位, 下载状态长按boot,偶尔出现几次成功,但是成功得没有什么可重复性,最后更换了一个stlink,发现还有会出现问题,最后将频率降低后才连接上,可能是因为自己使用的杜邦线有点长?

2.IO输出不对

这个问题一般使用开发板可能不容易遇见,我是自己画的PCB,有自己特定的IO需求,但是你知道的,stm32的IO一个功能可能对应了好几个管脚,但是我设计原理图的时候就已经绑定好了IO管脚,但是在配置的时候,使用了默认的IO管脚,导致我在下载完程序过后,我希望的排针没有输出期望的波形,一直在反复修改代码,新建工程,始终不尽人意,最后发现是在CubeMx里面配置的IO和我设计原理图时的IO不一致,结果导致了这种乌龙情况,当时还以为自己原理图PCB设计错了, 但是仔细想想不至于如此,再次核对后发现是stm32可以进行IO管脚复用或者说一个功能可以使用多个管脚的某一个实现功能,自己画板的注意一下。

3.代码顺序

reference : https://www.cnblogs.com/wenhao-Web/p/13820320.html
根据这篇文章实现了PWM的移相控制,但是自己也是调试了好久,最后发现代码顺序也极为重要,否则不按照期望情况进行输出。
这是最终的代码:

	HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
	HAL_TIMEx_PWMN_Start(&htim8, TIM_CHANNEL_1);

	HAL_TIM_OC_Start_DMA(&htim8, TIM_CHANNEL_2, ccr_ch2, 2);
	HAL_TIM_OC_Start_DMA(&htim8, TIM_CHANNEL_3, ccr_ch3, 2);
	HAL_TIM_OC_Start_DMA(&htim8, TIM_CHANNEL_4, ccr_ch4, 2);

	HAL_TIM_OC_Start(&htim8, TIM_CHANNEL_2);
	HAL_TIMEx_OCN_Start(&htim8, TIM_CHANNEL_2);

	HAL_TIM_OC_Start(&htim8, TIM_CHANNEL_3);
	HAL_TIMEx_OCN_Start(&htim8, TIM_CHANNEL_3);

	HAL_TIM_OC_Start(&htim8, TIM_CHANNEL_4);
	HAL_TIMEx_OCN_Start(&htim8, TIM_CHANNEL_4);

最开始的时候我的DMA开启在PWM开启之前 或者在最后 结果都不太对,只能夹在中间才有效。

posted on   天若手提滑铲  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
历史上的今天:
2024-01-07 verilog勘误系列之-->算术运算符运算失败
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示