初级会员

- 积分
- 182
- 金钱
- 182
- 注册时间
- 2015-11-11
- 在线时间
- 22 小时
|
1金钱
本帖最后由 远方的自己 于 2016-3-17 11:57 编辑
串口1的在接收的数据中,为什么只能识别单引号的字符型数据?怎么能让他识别整型的数据呢?
int main(void)
{
u8 Re=0;
u16 t;
u16 len;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
// LED_Init(); //LED端口初始化
// KEY_Init(); //初始化与按键连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000) //必须判断标志位是否接受完成
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
// USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
// while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束(等待发送完成后做后面的事情)
Re=USART_RX_BUF[t];
}
switch(Re)
{ //字符1-6控制舵机动作
case '1':
{
printf("1:\r\n\r\n");
}
break;
case 32:
{
printf("32:\r\n\r\n");
}
break;
case 33:
{
printf("33:\r\n\r\n");
}
break;
case 34:
{
printf("34:\r\n\r\n");
USART_SendData(UART4,0);
}
break;
default : USART_SendData(UART4,'0');
break;
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0; //必须需要的,在接受完数据之后要将标志位清零
}else
{
times++;
if(times%5000==0)
{
printf("\r\n战舰STM32开发板 串口实验\r\n");
printf("正点原子@ALIENTEK\r\n\r\n");
}
if(times%200==0)printf("请输入数据,以回车键结束\n");
// if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
串口只能接收二进制数据,至于这些二进制码代表什么含义由你软件来解析(比如说0x41,你可以认为是65,也可以认为是大写的A),反正STM32已经把数据给你了,怎么解析看你自己的。
|