利用STM32对接收的数据进行拆帧组码——以STM32单片机串口通信为例

本文介绍了如何使用STM32单片机处理串口通信中接收到的ASCII码数据,通过ASCII码转数值、数值转二进制及拆帧处理,详细阐述了整个流程,包括串口中断服务函数的使用,以及在STM32学习过程中的实践经验,实验平台为正点原子STM32探索者开发板。
摘要由CSDN通过智能技术生成

目的:
串口通信发送的数据是以ASCII码形式,对数据进行处理需要将ASCII码转换成数值,对数值转换成二进制,再根据帧格式对其拆帧。
流程;
1、接收串口发送的数据(串口中断服务函数)
2、将串口发送的数据转换为数值。
3、将数值转换成二进制
4、对二进制根据帧格式进行拆帧,并发送给串口显示。

STM32学习 第一次动手编程:

主函数:

int main(void)
{ 
    u16 num_r;
	u16 num_t;
	u8 t;
	u8 len;	
	u16 times=0;
    u8 b[16]={0};
	int y=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);		//延时初始化 
	uart_init(115200);	//串口初始化波特率为115200
	LED_Init();		  		//初始化与LED连接的硬件接口  
	while(1)
	{
    	//赋初值 不然会出错
		for(t=0;t<15;t++)
        { b[t]=0;}
	     y=0;  
		if(USART_RX_STA&0x8000)
		{					   
			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
	
			for(t=0;t<len;t++)
			{
			b[t]=USART_RX_BUF[t];//将发送的数存到数组中
			}
		
        num_r=atoi(b);  //将数组转成数值
		printf("num_r=%d\r\n",num_r); 
      //将十进制数转换成二进制			
		while(num_r!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值