你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
先检查一下引脚有无冲突,串口中断入口函数是否正确,两者无错误的话再看下面。还有好像你的串口好像中断标志位呢,清除在哪里??
昨天刚给朋友看了一个代码,F0的,他是加上串口后TIM1的一个引脚PWM输出不了了,他的初始化顺序是先TIM1后USART ,后来我把USart放在TIM前面,然后加了点延时,输出就正常了。(你可以加点延时看看,实在不行看下面)。
还有建议在程序最开始将总中断关闭,初始化完成在讲总中断打开,否则会影响初始化的。例如:
51的程序:
void main(void)
{
EA=0;//关闭总中断
.....//外设初始化
EA=1;//开总中断
}
评分
查看全部评分
评分
查看全部评分
MX_TIM8_Init();
两者前后顺序,可以正常输出PWM
果然是顺序问题
评分
查看全部评分