STM8 串口接收字符串问题

发布者:闪耀星空最新更新时间:2019-09-16 来源: eefocus关键字:STM8  串口接收  字符串 手机看文章 扫描二维码
随时随地手机看文章

此处附上接收中断源码

#ifdef _RAISONANCE_

void USART_RX_IRQHandler(void) interrupt 28

#endif

uint8_t cnt_USART ;

#ifdef _IAR_SYSTEMS_

#pragma vector=30

__interrupt void USART_RX_IRQHandler(void)

#endif

{

    /* In order to detect unexpected events during development,

   it is recommended to set a breakpoint on the following instruction.

    */

    USART_ClearITPendingBit ();//清中断标志

    if(!USART_GetFlagStatus (USART_FLAG_RXNE))//等待接收完毕

    {

    

      p_rxbuf[cnt_USART++] = USART_ReceiveData8();     //接收数据 

      if(cnt_USART == 0x0B)

        cnt_USART = 0xFF ;

    }

//    USART_RendCmd(p_rxbuf);  //接收11bytes串口指令

}

cnt_USART 为全局变量,因为每次接收每次只是接收1byte,因此,在主程序应该进行适当的延时来等待缓冲区的数据被读取。

       while(cnt_USART!=0xFF)

       {

        if(mark_1ms >100)

          break;

       }

在函数进行适当的延时进行等待,mark_1ms 此处是使用TIM2进行延时,也可以在主函数中进行空函数延时。

关键字:STM8  串口接收  字符串 引用地址:STM8 串口接收字符串问题

上一篇:SPI总线详解笔记
下一篇:解决stm8会卡在串口中断的问题

推荐阅读最新更新时间:2024-11-02 09:06

STM8学习笔记——PWM模块
首先将管脚配置为推挽输出。下面以向上计数模式为例来讲述PWM产生的原理:TIMx开始向上计数,TIMx_CNT为计数值,计数一次加1,TIMx_ARR确定了计数的上限,达到上限后计数器从0开始重新计数,所以一次PWM频率就由TIMx_ARR来确定了,即计数器时钟*(TIMx_ARR-1),频率确定了,接下来就是占空比。占空比是由TIMx_CCRx来确定的,PWM模式1下当TIMx_CNT TIMx_CCRx,输出OCiREF有效电平,TIMx_CNT =TIMx_CCRx时,输出OCiREF无效电平,至于有效电平是0还是1,要设置TIMx_CCERx,这样产生了一个PWM波形,可以说配置非常灵活,当TIMx_CCRx为0时,占
[单片机]
免费软件工具让用户通过STM8微控制器开发微型智能设备
新的Cosmic CXSTM8 C编译器让免费且无限制使用的开发工具链更完善 功能丰富的编译器工具可支持STM8全系产品,包括存储容量最高128KB的产品,对代码量不设任何限制 STM8S-DISCOVERY硬件开发工具使设计项目启动资金降至8美元 中国,2016年5月10日 横跨多重电子应用领域、全球领先的半导体供应商意法半导体 (STMicroelectronics,简称ST;纽约证券交易所代码:STM)进一步扩大其深受市场欢迎的STM8微控制器的选择范围,支持智能装置设计人员选用STM8微控制器开发方便现代工作生活的经济型计算任务。 意法半导体与Cosmic的最新合作代表包括开发、调试、优调STM
[物联网]
免费软件工具让用户通过<font color='red'>STM8</font>微控制器开发微型智能设备
IAR for STM8问题1
IAR for STM8弹窗:Fatal error while generating source browse infomation.See the Source Browse Log window for more infomation 这种情况是因为.c或者.h文件的包含路径中有中文,将中文改成英文之后重新设置路径,会如下正常运行。 正常运行如下:
[单片机]
IAR for <font color='red'>STM8</font>问题1
串口工作在DMA模式下有时接收异常
1 前言 客户反馈在使用STM32F205的串口工作在DMA模式时,有时能够接收数据,有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据。 2 复现现象 2.1 问题背景 与客户沟通,客户使用的是STM32F2标准库V1.1.0,串口波特率为1.408Mbps,不经过串口RS232,直接连接主CPU和从MCU(STM32F205)的串口发送和接收引脚,如下图所示: 图1 2.2 尝试重现问题 由于客户使用的是主从架构,实验采用两块STM3220G-EVAL评估板来重现现象。一块用来不间断发送串口数据,另一块采用串口DMA进行接收,直接通过杜邦线连接串口PIN脚并共地,不使用评估板上的RS232收
[单片机]
<font color='red'>串口</font>工作在DMA模式下有时<font color='red'>接收</font>异常
STM8 LCD602显示子程序
软件设计 /********************************************************************* 目 的: 建立LCD1602操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ #define PORT_busy PB_DDR=0x00;PB_CR1=0xff; #define busy PB_IDR #define PORT_OUT PB_DDR=0xff;PB_CR1=0xff; #define
[单片机]
进一步掌握STVD/COSMIC
如何分配变量到指定的地址 举例: unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00 unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100 @tiny unsigned char temp_C; //定义无符号变量temp_C,由编译器自动在地址小于0x100的RAM中为其分配一个地址 @near unsigned char temp_D; //定义无符号变量temp_D,由编译器自动在地址大于0xFF的RAM中为其分配一个地址 另外也可以采用伪指令 pragma 将函数或者变量定义到指定的section中,例如: #
[单片机]
进一步掌握STVD/COSMIC
STM8学习笔记---串口通信中如何自己定义通信协议
在单片机刚开始学习的时候,串口通信是经常要用到的,但是实际产品中串口通信是需要通信协议的。好多人不明白为什么要用通信协议,如何定义通信协议,带通信协议的程序要怎么写。今天就来说一下如何串口通信协议是如何定义出来的。 先看一段最简单的串口程序。 void Uart1_Init( unsigned int baudrate ) { unsigned int baud; baud = 16000000 / baudrate; Uart1_IO_Init(); //IO口初始化 UART1_CR1 = 0; UART1_CR2 = 0; UART1_CR3 = 0; UART1_BRR2 = ( uns
[单片机]
如何利用STM32单片机发送字符串
一、STM32有自己的字符发送函数。 void PC_SendChar(uint8_t DataToSend) { USART_SendData (USART1 ,DataToSend); while(USART_GetFlagStatus (USART1 ,USART_FLAG_TC )!=SET ); } 二、发送字符串函数是在字符发送函数的基础上编写的 void PC_SendString(uint8_t *str) { while(*str) { PC_SendChar (*str); str++; } } 三、发送字符串示例 PC_SendString((u8*) Welcome to the NDIR wo
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved