版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/switch_love_case/article/details/88881643
title: 公司项目代码调试总结
tags: Siri
date: 2019-03-28 23:31:00
最近公司做了一系列的项目,我也是负责好几个项目并行开发,也是很吃力,很紧张,幸好今天进展还算顺利。
STM32程序编写记录
今天最难调试的是 一个485IC,明天开始调试移动M5311的NBiot模组。
程序写的没毛病,但是总是出错 我也很无语,最后查了一些资料终于搞定了,很开心。
代码记录如下:
/***********************************************************
函数名称:int RS485_SendCmd(u8 *cmd,u8 len,int x,int wait)
函数功能:RS485问询与返回指令
入口参数:cmd:问询指令
len:数据长度
x:数据起始位
wait:问询延时
出口参数:数据点
备 注:
***********************************************************/
int RS485_SendCmd(u8 *cmd,u8 len,int x,int wait)
{
int Val = 0;
int i;
unsigned short CRC_Tmp;
unsigned short crc;
struct_usart3.USART_Length = 0;
printf("[RS485_SendCmd] %d\r\n",len);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay_ms(2);
uart3_send_buff(cmd, len);
delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
delay_ms(wait);
if (struct_usart3.USART_Length != 0) //返回值不为空
{
//for(i=0;i<len+1;i++) //打印出来接收的包共9个数据
//{
//printf("%X@",struct_usart3.USART_BUFF[i]);
//}
// printf("%d",struct_usart3.USART_Length);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧
crc = ((unsigned short)struct_usart3.USART_BUFF[struct_usart3.USART_Length-2]<<8) + struct_usart3.USART_BUFF[struct_usart3.USART_Length-1]; //收到数据的crc校验值
CRC_Tmp = CRC_16_HEX(struct_usart3.USART_BUFF,struct_usart3.USART_Length-2); //处理除去最后两位的数据CRC校验,算出crc校验值
//printf("%X\r\n",crc);
//printf("%X\r\n",CRC_Tmp);
if (CRC_Tmp == crc){ //比较CRC校验值是否相等,相等则进行下一步处理
Val = (struct_usart3.USART_BUFF[x]*256) + (struct_usart3.USART_BUFF[x+1]*1);
struct_usart3.USART_BUFF[struct_usart3.USART_Length] = '\0'; //清零
return Val;
}
struct_usart3.USART_BUFF[struct_usart3.USART_Length] = '\0'; //清零
return Val;
}
}
其中最重要的是485EN使能端口的配置,以及发送和接收数据时的上拉和下拉配置。
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay_ms(2);
uart3_send_buff(cmd, len);
delay_ms(2);//稍稍延时一下,原因去查看sp3485的手册吧
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
“delay_ms(2);” 延时非常重要!!发送数据前 先把EN脚拉高,然后发送数据 ,数据发送完将EN再拉低,进入接收中断以后,确保接收到数据立即将EN复位(拉高)进行下一次的准备。
致此,公司此项目开发的新PCB,代码我已全部调通,明天进行NB调试与设备装机调试,并且进行其它传感器的校验。