当前位置:首页 > 单片机 > 单片机
[导读]写在前面的话,以警示所有程序员。你们或许还没有发现,随着我们深入编程领域的时间越久,我们程序员的思维越来越简单,情商也越来越低,这就是编程行业对我们自身的影响。整体跟逻辑的东西打交道,思维当然会固化。

写在前面的话,以警示所有程序员。


你们或许还没有发现,随着我们深入编程领域的时间越久,我们程序员的思维越来越简单,情商也越来越低,这就是编程行业对我们自身的影响。整体跟逻辑的东西打交道,思维当然会固化。如何避免呢?想知道的话留个言,我会在下一篇博文中更新。


还要警示的是:做一个程序员的能力是有限的,一个程序员团队才可以做成大事。无论哪种语言,哪种程序,都不重要,重要的是我们的思路和逻辑,语言只是工具,不是目的!

//串口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以及无法接收新数据

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭