OpenEdv-开源电子网

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

参考例程串口实验的一个小问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-11-28
在线时间
0 小时
发表于 2015-11-29 13:53:05 | 显示全部楼层 |阅读模式
5金钱
串口实验,我想在XCOM2.0中发送一个正整数到板子,板子把它转换成一个十进制数保存在一个中间变量n中,方便完成一些后续的自定义功能
但它转换出来并不正确啊(我发8它转换的结果是80........我发11它转换的结果是21)有图有代码,求指导,谢谢!


代码:
<main.c>
#include "delay.h"
#include "sys.h"
#include "usart.h"
//ALIENTEK Mini STM32开发板范例代码3
//串口实验   

 int main(void)
 {
u8 t;
u8 len;
u8 n;
u16 times=0; 
delay_init();     //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
 
while(1)
{
if(USART_RX_STA&0x8000)
{   
n=0;
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
for(t=0;t<len;t++)
{
n=n+(USART_RX_BUF[len-t-1]-'0')*10^t;     //将数组中的ASCII码转换成一个十进制的数
}
printf("\r\n您刚才输入的整数为:%d\r\n",n);

USART_RX_STA=0;
}
else
{
times++;
if(times%500==0)
printf("\r\n请输入一个大于零的整数发送到stm32mini板子\r\n");
delay_ms(10);   
}
}  
}



最佳答案

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

10的t次方另写一个函数吧,^异或运算符吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-29 13:53:06 | 显示全部楼层
10的t次方另写一个函数吧,^异或运算符吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11574
金钱
11574
注册时间
2014-4-1
在线时间
1321 小时
发表于 2015-11-29 15:25:32 | 显示全部楼层
仿真器直接在接收中断的位置设断点,看接收数据到底是什么样。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-11-28
在线时间
0 小时
 楼主| 发表于 2015-11-29 16:55:24 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
接收的数据是正常的,还有一个奇怪的现象:如果我把上图中第25行代码改为:n=n+(USART_RX_BUF[len-t-1]-'0');  
即去掉(乘以10的t次方)后,可以正常转换个位数(也就是说发送0正常转换为0,发1转换为1.......发9转换为9)
那么问题来了,乘以10的t次方 我的目的就是恢复它在原来的位置啊(比如发“123(结束标志)”到板子,恢复成十进制:n=1*100+2*10+3*1)
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-11-28
在线时间
0 小时
 楼主| 发表于 2015-11-29 19:10:51 | 显示全部楼层
回复【4楼】龙之谷:
---------------------------------
一语惊醒梦中人,感激不尽!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-16 03:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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