OpenEdv-开源电子网

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

各位大佬,我的代码这个地方出了一点问题

[复制链接]

3

主题

12

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2020-3-5
在线时间
10 小时
发表于 2020-3-5 16:15:37 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 天空之懿 于 2020-3-5 16:18 编辑

代码的主要作用是:我给单片机发一个数据,单片机定时器开始工作,然后判断计时器6(计时1time就是1ms)的次数time是否等于rec,如果等于的话单片机的LED灯改变一次亮暗,但是我每次给单片机发送的数据1000时,单片机内部收到的rec就是0x30,LED闪烁频率特别快,然后我用调试助手让单片机把发送过去的数据再发回来,结果我发过去是1000,串口调试助手上面接收的也是1000,但是我用Jlink调试发现代码里面的rec值是0x30.

捕获.PNG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2020-3-5 16:35:56 | 显示全部楼层
检查类型有没有溢出,顺序对不对
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2020-3-5
在线时间
10 小时
 楼主| 发表于 2020-3-5 16:46:43 | 显示全部楼层
WZTENG 发表于 2020-3-5 16:35
检查类型有没有溢出,顺序对不对

我定义的是uint16_t的time 和rec溢出不了,我现在怀疑的原因跟中断有关,我的TIME函数也是用的中断,time6的更新中断,定时1ms,time++,接收函数也是中断,接收寄存器非空中断,不知道会不会跟两个中断有关
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2020-3-5 17:15:40 | 显示全部楼层
天空之懿 发表于 2020-3-5 16:46
我定义的是uint16_t的time 和rec溢出不了,我现在怀疑的原因跟中断有关,我的TIME函数也是用的中断,time6 ...

USART_SendByte()明明是byte为什么能发大于255的数呢???
https://github.com/WZTENG
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2020-3-5 17:17:36 | 显示全部楼层
试下不要发1000,,发个比如222,,看下是不是收到222,,,
https://github.com/WZTENG
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-3-5 17:34:39 | 显示全部楼层
'0'=0x30   
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2019-10-31
在线时间
25 小时
发表于 2020-3-5 18:03:09 | 显示全部楼层
字符串1000换成ascii码是0x31 0x30 0x30 0x30
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2020-3-6 08:57:06 | 显示全部楼层
你发送的时候发了ASCII码了
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2020-3-5
在线时间
10 小时
 楼主| 发表于 2020-3-6 10:58:41 | 显示全部楼层
我想问一下,我勾了16进制发送以后,我发送168,Jlink调试的时候显示rec是0x08,使用发送后再原路发送回去的函数USART_HalfWord后串口调试助手上面显示的是 00 16 00 08,这是什么意思,我的接收函数用的是库函数
USART_ReceiveData,难道是接收函数有问题吗,我想知道我怎么样才能让rec等于我串口发送过去的十六进制数,现在好像rec如果发送的是偶数位只能接收到后两位比如1688 ,rec=0x0088,如果发送的是15689 ,rec=0x0009.我感觉是接收函数的问题,所以想知道怎么改接收函数
捕获2.PNG
捕获3.PNG
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 08:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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