做了以下简单的串口实验,想把串口获得的数据加1,再将其反馈给串口助手显示。
但是只有个位数可以,两位数就出现都加1 的情况,我不知道应该如何转换,小白问题请解答。
个人感觉只是改变了ASCII码~
int main(void)
{
u16 t;
u16 len;
u16 times=0;
u8 m[20];
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
for(t=0;t<len;t++)
{
m[t]=USART_RX_BUF[t];
m[t]=m[t]+1;
USART_RX_BUF[t]=m[t];
}
printf("
您发送的消息为:
");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("
");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("
战舰STM32开发板 串口实验
");
printf("正点原子@ALIENTEK
");
}
if(times%200==0)printf("请输入数据,以回车键结束
");
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);
}
}
}
你说的对,是数值转换问题,谢谢你的转换函数代码
不过话说有没有现成的库函数,像是小数点什么的都需要转换
一周热门 更多>