写在前面的话,以警示所有程序员。
你们或许还没有发现,随着我们深入编程领域的时间越久,我们程序员的思维越来越简单,情商也越来越低,这就是编程行业对我们自身的影响。整体跟逻辑的东西打交道,思维当然会固化。如何避免呢?想知道的话留个言,我会在下一篇博文中更新。
还要警示的是:做一个程序员的能力是有限的,一个程序员团队才可以做成大事。无论哪种语言,哪种程序,都不重要,重要的是我们的思路和逻辑,语言只是工具,不是目的!
//串口1中断服务程序
void USART1_IRQHandler(void)
{
u8 rec_data;
u8 i=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
rec_data =(u8)USART_ReceiveData(USART1); //(USART1->DR) 读取接收到的数据
if((USART_RX_STA & 0x80)==0) //接收未完成,未检测到 0x0d 0x0a的结束符
{
USART_RX_BUF[USART_RX_STA & 0X7F]=rec_data;
USART_RX_STA++;
if(USART_RX_STA>127){USART_RX_STA=0;}//接收超过127,直接复位,重新接收
else {U1_Rx_Tout=0;Tout_Start=1;} //置零,开始计时
}
}
}
//定时器2中断服务函数
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET) //溢出中断
{
if(Tout_Start==1){
U1_Rx_Tout++;//接收超时累加
if(U1_Rx_Tout>=2){USART_RX_STA|=0x80;Tout_Start=0;}}//超过20ms,接收结束
}
TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中断标志位
}
//主循环:接收到数据,判断结束后,及时发送到电脑
while(1)
{
if(USART_RX_STA&0x80)
{
len=USART_RX_STA&0x7F;//读取接收数据的长度
uart1SendChars(USART_RX_BUF,len);//发送
USART_RX_STA=0; //一定要清零,否则重复执行if以及无法接收新数据
}
}
关键字:STM32 单片机 串口接收 无标志位字符串
引用地址:
STM32单片机串口接收不定长无标志位字符串定时器判断结束
推荐阅读最新更新时间:2024-03-16 15:43
AT与STC单片机的主要区别
1.常用的51单片机 51单片机即传统的兼容8051指令代码的8位单片机,对于新手来说,刚接触单片机主要已AT单片机和STC单片机。其两种单片机主要区别为不同的厂家生成,但代码基本可以通用。常用的AT89C51、AT89C52、AT89S51、AT89S52、STC89C51、STC89C52单片机代码均可通用。 但在使用52单片机时需要注意,52是51单片机的更新版本,相比51单片机,52多了一个T2定时器、128B只读存储器、4K只读存储器、2个中断和一个看门狗。 AT与STC单片机的主要区别是程序的下载方式,AT中的S51、S52系列的下载方式是ISP下载方式,而C51、C52与STC都是串口下载方式;其他方面基本大同小
[单片机]
C8051F单片机实验系统设计
摘要:为满足单片机学习中对实践技能的要求,提高单片机开发系统的稳定性和可扩展性,降低系统功耗,设计了一种基于FPGA的C8051F单片机开发板。利用FPGA实现键盘扫描、液晶驱动、地址译码以及其他外设接口,大幅度简化外围电路结构。系统可在高低频时钟间切换以减小功耗,并增加了音频处理模块,实现基本的音频信号的存储和回放。实验结果表明,该电路板相比普通的单片机开发板系统功耗减小50%左右,拥有最高达25 MIPS的处理速度,单片机可以直接驱动多达20多个LS TTL门电路,FPGA的引入使得外扩其他电路更为方便和灵活,具有良好的扩展性。 关键词:单片机;FPGA;外围电路;电路板 目前高校单片机教学中大多是以MCS51单片机为
[单片机]
基于miniC-A101FS和单片机AT89C2051的全自动化导游机设计
电子导游系统发展有个过程,最开始时是一种半自动化系统,功能是把景点信息以语音文件格式存储在导游机里,一般通过键盘直接键入景点代码,选择播放。这种类型的导游机,缺点是要输入景点代码,很不方便。发展到现在,出现了全自动化的导游机,它在景点先安放无线发射模块,这些发射模块可以控制工作范围,这样在各个景点就有不同的编码信号。游客到达景点后,游客手上的导游机会自动接收编码信号,经过解码后,由控制中心控制语音播放即可。本文介绍了这一全自动化导游机的设计,采用了miniC-A101FS和单片机AT89C2051配合使用。 1 miniC-A101FS和SC2272的介绍 1.1 miniC-A101FS miniC-A100FS是串口
[单片机]
STM32 堆和栈的学习(二)
1、首先来看:栈(STACK)的问题 函数的局部变量,都是存放在”栈”里面,栈的英文是:STACK. 所以,如果一个函数的局部变量过多,程序崩溃是很容易的事情,这时候,一般你会进入到hardfault…. 对于栈区,一般栈顶,也就是MSP,在程序刚运行的时候,指向程序所占用内存的最高地址 图中,MSP就是:0X2000 0940. 程序运行后,MSP就是从这个地址开始,往下给函数的局部变量分配地址. 这里的Code,RO-data,RW-data,ZI-data分别代表如下: Code为程序代码部分 RO-data 表示 程序定义的常量const temp; RW-data 表示 已初始化的局部变量 ZI-data
[单片机]
为中国家庭的数字生活圆梦 瑞萨亮相苏州电博会
10月18日-22日,由国家商务部、国家信息产业部、国务院台湾事务办公室和江苏省人民政府主办的目前国内最大的电子专业展会----“中国苏州电子信息博览会” eMEX2007(简称电博会)在苏州国际博览中心隆重开幕。举办到第五届的电博会已经成为国家电子信息产业的一大盛会,吸引了众多国际知名IT企业前来参展。作为世界领先的半导体系统解决方案供应商和全球首位的MCU供应商,瑞萨在会上展出了MCU和其在中国重要的制造基地——苏州本地工厂生产的多款产品。琳琅满目的展台上展出的主要有:适用领域广泛的MCU产品及装有瑞萨产品的中国本土知名企业所生产的数字化设备,今年11月由教育部主办的“2007瑞萨超级MCU模型车大赛”的实战演示。 据悉,本
[焦点新闻]
一种定点数字信号处理器与单片机的接口设计方
TMS320VC5402(VC5402)增强外设由软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(DMA)控制器、增强型8位并行主机接口(HPI)等组成。两个可编程的多通道缓冲串口(McBSP)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。DSP和单片机之间的通信一般利用双口RAM,通过串口或DSP的HPI 接口 实现。 利用双口RAM实现 CY7C026是CYPRESS公司生产的16k×16B高速双口静态RAM,存取速度小于25ns。他具有真正的双端口,可以同时进行数据存取,两个端口具有独立的控制信号线、地址线和数据线,另外通过主?从选择可
[嵌入式]
STM32库文件结构及CMSIS介绍
使用STM32库时,各库文件作用及关系: CMSIS标准介绍:
[单片机]
51单片机针脚排列和定义
针脚排列: 针脚定义: 40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 ⒈ 电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; 注:用万用表测试单片机引脚电流一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这之是万用表反映没这么快而已,在某一个瞬间单片机引脚电流还是保持在0v或者5v的。 ⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 ⒊ 控制线:控制线共有4根, ⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲
[单片机]