历史上的今天
今天是:2025年04月23日(星期三)
2020年04月23日 | STM32通过串口如何接收服务器发来的数据
2020-04-23 来源:eefocus
STM32通过串口如何接收服务器发来的数据代码如下:
//在stm32f10x_it.c中的代码
void USART1_IRQHandler(void)
{
u8 GetData;
if(USART_GetITStatus(USART1, USART_IT_RXNE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
GetData=(u8)USART_ReceiveData(USART1)&0xff;
Usart1_buf[usart1_lent]=GetData;
usart1_lent++;
}
if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)
{
USART_ITConfig(USART1, USART_IT_TC, DISABLE);
USART_ClearITPendingBit(USART1, USART_IT_TC);
}
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
{
USART_ClearFlag(USART1,USART_FLAG_ORE);
USART_ReceiveData(USART1);
}
}
//main()函数中的代码
//服务器发来的数据放在Usart1_buf数组中
u8 Usart1_buf[256];
unsigned int usart1_lent = 0;
void check_ser(void)
{
a = strstr(Usart1_buf, "1");
b = strstr(Usart1_buf, "12");
c = strstr(Usart1_buf, "123");
d = strstr(Usart1_buf,"1234");
if(NULL != a && usart1_lent==1)//当服务器发来1时干某事
{
}
else if(NULL != b && usart1_lent==2)//当服务器发来12时干某事
{
}
else if(NULL != c && usart1_lent==3)//当服务器发来123时干某事
{
}
else if(NULL != d && usart1_lent==4)//当服务器发来1234时干某事
{
}
else if(Usart1_buf[0]=='['&&Usart1_buf[17]==']'&& usart1_lent==18)//判断是否为获取时间参数
{
}
else if (Usart1_buf[0]=='O'&&Usart1_buf[1]=='K' && usart1_lent==2)//判断是否为普通心跳返回
{
}
}
史海拾趣
|
#include sbit BT_SND =P1^0; sbit BT_REC =P1^1; /**********************************************IO 口模拟232通讯程序 使用两种方式的C程序 占用定时器0 **********************************************/ #define MODE_QUICK #define ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:19 编辑 第一章 ADC与DAC概念 什么是ADC? “ADC”Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处 ...… 查看全部问答> |
|
我对电子信息了解不多,因为老师给的任务是做一个监控系统,我负责传感器模块和主模块之间的无线通信,请问各位高手怎么做,是用单片机控制无线模块收发数据还是无线模块本身就可编程?我在网上查了些资料,最后一头雾水,我对这些了解太少了。希望 ...… 查看全部问答> |
|
各位高手:我用wince5.0测试程序,在程序中用new分配2M内存,然后delete[]。然后退出程序,在此过程中监视内存使用量,发现几次操作后系统内存使用量变大了。貌似程序退出后系统并没有完全回收内存!请教原因!… 查看全部问答> |
|
linux在运行应用程序的时候是用户态的,MMU的0地址指向的是用户的物理地址。那有中断触发时,它是怎么跳到内核的中断向量表的?有人能详细说一说吗? 紧接上面的问题,linux的进程调度器的时间片是怎么控制的?从中断模式跳入操作系统模式的过程是 ...… 查看全部问答> |
|
由于可能要频繁改动一个工程中的一个verilog文件,其他的文件不改变。由于每一次综合整个系统需要花很久的时间,现在希望先把其他的文件综合出.edf文件,再和剩下的那个.V文件最后再综合一次。这样可能会省时间,并且不需要改动其他的文件?… 查看全部问答> |




