OpenEdv-开源电子网

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

串口中断时对字符转数字的困惑

[复制链接]

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
发表于 2015-9-14 08:24:25 | 显示全部楼层 |阅读模式
5金钱
void USART1_IRQHandler(void)
{
char ch[2];
  int i,j;
  int Deg;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//

    for(i=0;i<2;i++)
{
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    ch=USART_ReceiveData(USART1);
 USART_SendData(USART1,ch[0]);
USART_SendData(USART1,ch[1]);
   Deg=atoi(ch);
//  Deg= cdtd(ch);
 //Deg=(ch[1]-'0')*10+(ch[0]-'0');
// printf("%c",ch);
}
请问  我在这里应用atoi函数把我输入的字符转化为数字型数据,结果是错误的!我想请问一下要怎么把我串口
输入的字符转化为数据?
  比如我输入的是12,23  分别把这两个字符转换为数字,因为我要调用这两个数字。(基础不太好 ,请高手指点一下,举个例子)

最佳答案

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

自己写个函数解析一下,不难的。 了解了ASCII和数字的区别,就很容易搞定。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-14 08:24:26 | 显示全部楼层
自己写个函数解析一下,不难的。
了解了ASCII和数字的区别,就很容易搞定。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
金钱
267
注册时间
2012-11-5
在线时间
11 小时
发表于 2015-9-16 10:38:59 | 显示全部楼层
字符"12":
1字符为0x31,转换为1的过程:0x31-0x30 = 0x01 = 1;
2字符为0x32,转换为2的过程:0x32-0x30 = 0x02 = 2;
1*10 + 2 = 12;
你看看我这样写行不行?
学习之路漫长而修远......
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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