你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
为什么使用了串口初始化之后,TIM8的PWM就不能正常输出了?
[复制链接]
vention123456
提问时间:2016-12-12 08:36 /
阅读主题, 点击返回1楼
赞
0
收藏
1
评论
27
分享
发布时间:2016-12-12 08:36
请先
登录
后回复
27个回答
小小超
回答时间:2016-12-12 13:40:22
a1024a.1 32b0c
帮楼主顶上去
赞
0
评论
回复
五哥1
回答时间:2016-12-31 02:41:31
a1024a.1 32b0c
HAL库的和标准库的不一样
赞
0
评论
回复
海迹天涯
回答时间:2016-12-31 11:11:23
a1024a.1 32b0c
给你顶起
赞
0
评论
回复
dear祝子
回答时间:2016-12-31 11:44:18
a1024a.1 32b0c
本帖最后由 dzzwoaizi 于 2016-12-31 11:50 编辑
先检查一下引脚有无冲突,串口中断入口函数是否正确,两者无错误的话再看下面。还有好像你的串口好像中断标志位呢,清除在哪里??
昨天刚给朋友看了一个代码,F0的,他是加上串口后TIM1的一个引脚PWM输出不了了,他的初始化顺序是先TIM1后USART ,后来我把USart放在TIM前面,然后加了点延时,输出就正常了。(你可以加点延时看看,实在不行看下面)。
还有建议在程序最开始将总中断关闭,初始化完成在讲总中断打开,否则会影响初始化的。例如:
51的程序:
void main(void)
{
EA=0;//关闭总中断
.....//外设初始化
EA=1;//开总中断
}
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
zbber
回答时间:2017-1-1 07:38:49
a1024a.1 32b0c
应该还是TIM的中断问题,楼主看一下HAL库里面的tim8的初始化代码
赞
0
评论
回复
damiaa
回答时间:2017-1-1 10:32:36
a1024a.1 32b0c
主要查查资源是否充突。后面初始化的能用。前面的不能用。很明显。
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
五哥1
回答时间:2017-1-1 15:21:59
a1024a.1 32b0c
MX_USART1_UART_Init();
MX_TIM8_Init();
两者前后顺序,可以正常输出PWM
果然是顺序问题
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
海迹天涯
回答时间:2017-1-4 08:47:16
a1024a.1 32b0c
没遇到过
赞
0
评论
回复
damiaa
回答时间:2017-1-19 11:10:14
a1024a.1 32b0c
不光是顺序,资源冲突。顺序颠倒后还是有面的能用,前面的不能用。资源部冲突后前后的就都能用了。
赞
0
评论
回复
队长shiwo
回答时间:2017-1-19 11:24:39
a1024a.1 32b0c
看代码这两者应该是没有互相影响的吧
赞
0
评论
回复
原子能
回答时间:2017-10-25 19:31:27
a1024a.1 32b0c
我也遇到和你一样的问题 uart1和tim1 通道1初始化先后顺序的问题,导致uart1不输出
赞
0
评论
回复
电子信息chen
回答时间:2019-12-5 23:30:18
a1024a.1 32b0c
先初始化TIM8,在初始化串口。基于原有库,一般都是先配置TIMER的,最后在配置复用IO,具体原因不是很清楚,只是前面遇到过,卡了很久,后面都是这么操作
赞
0
评论
回复
hanguibin222
回答时间:2020-6-17 15:16:43
a1024a.1 32b0c
我遇到的问题跟你差不多,我是用TIM3的ch1即PA6管脚比较输出一个方波。但是神奇的事是TIM3在UART1前初始化,一点问题没有,把TIM3放到USART1后初始化,方波就没有输出了。经过比对寄存器发现CCR1的值正常应该是0结果不输出方波时CCR1的值大多数时候是0xA5A5,有的时候还是0x0800,影响这个CCR1的值就是TIM_OCInitTypeDef TIM_OCInitStructure;这个结构体变量,所以我猜想可能的原因是因为结构体变量是局部变量,没有指定初始化值,使结构体成员TIM_Pulse是个随机值,最终导致CCR1的值错误。所以没输出了。所以在申请变量的地方给这个结构体的局部变量赋初值为0就好了。
赞
0
评论
回复
1
2
/ 2 页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
先检查一下引脚有无冲突,串口中断入口函数是否正确,两者无错误的话再看下面。还有好像你的串口好像中断标志位呢,清除在哪里??
昨天刚给朋友看了一个代码,F0的,他是加上串口后TIM1的一个引脚PWM输出不了了,他的初始化顺序是先TIM1后USART ,后来我把USart放在TIM前面,然后加了点延时,输出就正常了。(你可以加点延时看看,实在不行看下面)。
还有建议在程序最开始将总中断关闭,初始化完成在讲总中断打开,否则会影响初始化的。例如:
51的程序:
void main(void)
{
EA=0;//关闭总中断
.....//外设初始化
EA=1;//开总中断
}
评分
查看全部评分
评分
查看全部评分
MX_TIM8_Init();
两者前后顺序,可以正常输出PWM
果然是顺序问题
评分
查看全部评分