OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2562|回复: 9

STM32的PWM和串口初始化影响和CAN误发ID的接收问题

[复制链接]

3

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-7-4
在线时间
23 小时
发表于 2019-12-10 17:22:47 | 显示全部楼层 |阅读模式
1金钱
问题1,main函数里,stm32的串口初始化和pwm初始化位置问题。串口初始化直接放pwm初始化前面,影响pwm使之无波形输出。中间加隔语句或其他初始化pwm就正常。百度过很多资料,至今不知何原因。不知您有什么看法。
问题2,stm32 can接收问题。一个只有id无数据的包(误发时),在成功通过滤波器,触发fifo接收中断。中断处理中读取了fifo数据。但是fifo是前一次数据,会执行前一次动作。怎么使这一次中断被抛弃不处理,避免错误的执行控制。fifo只能释放,无法清除。不知道从何处判断这是一次无效的接受。???

最佳答案

查看完整内容[请看2#楼]

感谢,你指的什么函数,能贴出来看下么,有人说是MDK字节对齐问题导致。 我需要过滤有效接收的是数据帧,单发ID只是数据帧的一种误发,我想知道怎么正常情况下程序怎么抛弃掉这种错误的操作。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-7-4
在线时间
23 小时
 楼主| 发表于 2019-12-10 17:22:48 | 显示全部楼层
nashui_sx 发表于 2019-12-10 20:10
第一个定时器串口配置结构体用之前有个函数恢复默认值就好了,第二个远程帧,就用远程帧读

感谢,你指的什么函数,能贴出来看下么,有人说是MDK字节对齐问题导致。
我需要过滤有效接收的是数据帧,单发ID只是数据帧的一种误发,我想知道怎么正常情况下程序怎么抛弃掉这种错误的操作。
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2019-12-10 17:28:50 | 显示全部楼层
问题1:看是否串口和PWM共用了引脚。
问题2:判断下数据为0 不处理。
茵茵猪头
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-10 18:23:24 | 显示全部楼层
帮顶                                                               
成功没有捷径
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-12-10 20:10:10 | 显示全部楼层
第一个定时器串口配置结构体用之前有个函数恢复默认值就好了,第二个远程帧,就用远程帧读
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14407
金钱
14407
注册时间
2018-8-3
在线时间
1156 小时
发表于 2019-12-10 20:18:01 | 显示全部楼层
你试下初始化IO的时候每个成员变量都赋值看看 可能是继承了上个IO初始化的堆栈导致的
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2019-12-14 17:29:55 | 显示全部楼层
哈哈哈哈
回复

使用道具 举报

3

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-7-4
在线时间
23 小时
 楼主| 发表于 2019-12-16 16:13:49 | 显示全部楼层
翼行园子 发表于 2019-12-10 20:18
你试下初始化IO的时候每个成员变量都赋值看看 可能是继承了上个IO初始化的堆栈导致的

好的,谢谢。有问过资深的工程师说是MDK字节对齐问题,应该跟您说的意思一样。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-12-16 16:26:52 | 显示全部楼层
lipei 发表于 2019-12-10 17:22
感谢,你指的什么函数,能贴出来看下么,有人说是MDK字节对齐问题导致。
我需要过滤有效接收的是数据帧 ...

TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);  //设置缺省值
TIM_OCStructInit(&TIM_OCInitStructure);          //设置缺省值
TIM_ICStructInit(&TIM_ICInitStructure);          //设置缺省值
回复

使用道具 举报

3

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-7-4
在线时间
23 小时
 楼主| 发表于 2019-12-19 09:38:47 | 显示全部楼层
nashui_sx 发表于 2019-12-16 16:26
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);  //设置缺省值
TIM_OCStructInit(&TIM_OCInitStruct ...

是不是PWMDeInit()这个,很多外设在使用之前建议需要设为缺省值然后再配置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-21 12:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表