你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8L 串口接收不定长数据的处理

[复制链接]
dsoyy 发布时间:2015-12-14 16:20
STM8L 串口接收不定长数据(中断)
STM8L是一款低价位的低功耗8位处理器。
串口部分接收不定长数据,不确定结束符的处理办法,采用idle中断的方式来处理,增加了效率。
void USART_Config(void)
{
  /*USART configured as follow:
       - BaudRate = 9600 baud  
       - Word Length = 8 Bits
       - One Stop Bit
       - Odd parity
       - Receive and transmit enabled
       - USART Clock disabled
  */
GPIO_Init(GPIOC,GPIO_Pin_2,GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOC,GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Fast);
STM_EVAL_COMInit(COM1, (uint32_t)9600, USART_WordLength_8b,USART_StopBits_1,
                   USART_Parity_No,(USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
  /*Enable general interrupts */
USART_ITConfig(EVAL_COM1, USART_IT_RXNE, ENABLE);
USART_ITConfig(EVAL_COM1, USART_IT_IDLE, ENABLE);
  /*Enable USART */
USART_Cmd(EVAL_COM1, ENABLE);
}
中断处理:
typedef struct
{
__IO char buf[RX_LENGTH];
__IO char length;
}Rx_Data_Type;
Rx_Data_Type Rx_Data;
#define RX_LENGTH 64
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28)
{
       chartemp = 0;
       if(Rx_Data.length>= RX_LENGTH )
      {
              Rx_Data.length= 0;
      }
      
    Rx_Data.buf[Rx_Data.length ]  =(USART_ReceiveData8(EVAL_COM1) );
    Rx_Data.length ++;
      temp =EVAL_COM1->SR;
      if (temp & 0x0F)
      {
            Rx_Data.length = 0;
              return;
      }
      if (temp & 0x10)    //idle
      {
           Rx_Flag = 1;
      }
}
主函数:
Main(void)
{
       USART_Config();
      enableInterrupts();
      
               while(1)
{
                 if(Rx_Flag)
                 {
                      Rx_Flag = 0;
                      Rx_Data.length = 0;
                      Deal_RxUart();
                             }
           }
}

收藏 2 评论3 发布时间:2015-12-14 16:20

举报

3个回答
dsoyy 回答时间:2015-12-14 16:20:25
一点心得,分享一下。
加拿大 回答时间:2015-12-14 19:01:11
谢谢分享
disheng4688 回答时间:2015-12-15 09:19:24
谢谢分享

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版