高级会员

- 积分
- 598
- 金钱
- 598
- 注册时间
- 2014-4-14
- 在线时间
- 76 小时
|
程序功能如题,使用方法如下,这个串口程序支持232、485、支持清缓存、支持库版本与寄存器版本的选择性编译,不过在使用寄存器版本的时候,要注意MY_NVIC_Init()函数的使用,我这里给了个sys.c文件,里面有MY_NVIC_Init()函数的实现,童鞋们可以参考下,程序里面给了个crc16的校验算法,以及printf的实现,程序自己做了头空数据处理,也就是说,如果程序收到"0x00 0x00 0x01 0x02 0x00 0x03 0x00",程序会将前面的0x00去掉,实际只会收到"0x01 0x02 0x00 0x03 0x00",如果有需要接收前面的0x00的童鞋,请自行在接收中断中处理。希望能帮助大家吧~~代码整理的很累,写不好勿喷,求大神指点,继续完善~~
main.c
[mw_shl_code=c,true]#include <string.h>
#include <stdlib.h>
#include "stdio.h"
#include "delay.h"
#include "usart1.h"
#include "usart2.h"
#include "usart3.h"
#include "usart4.h"
#include "usart5.h"
int main(void)
{
u8 buff[200]="";
int siz = 0;
delay_init();//延时函数初始化
usart1_Configuration(9600);
usart2_Configuration(9600);
usart3_Configuration(9600);
usart4_Configuration(9600);
usart5_Configuration(9600);
printf("Begin...\r\n");
while(1)
{
siz = 0;
memset(buff,0,sizeof(buff));
siz = usart1_Receive(buff, sizeof(buff));
if(siz){
usart1_Send((u8 *)"usart1 recv:",strlen("usart1 recv:"));
usart1_Send(buff,siz);
}
siz = usart2_Receive(buff, sizeof(buff));
if(siz){
usart2_Send((u8 *)"usart2 recv:",strlen("usart2 recv:"));
usart2_Send(buff,siz);
}
siz = usart3_Receive(buff, sizeof(buff));
if(siz){
usart3_Send((u8 *)"usart3 recv:",strlen("usart3 recv:"));
usart3_Send(buff,siz);
}
siz = usart4_Receive(buff, sizeof(buff));
if(siz){
usart4_Send((u8 *)"usart4 recv:",strlen("usart4 recv:"));
usart4_Send(buff,siz);
}
siz = usart5_Receive(buff, sizeof(buff));
if(siz){
usart5_Send((u8 *)"usart5 recv:",strlen("usart5 recv:"));
usart5_Send(buff,siz);
}
}
}[/mw_shl_code]
usart.zip
(27.04 KB, 下载次数: 1484)
|
|