历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2019年11月26日 | STM8S103之串口中断接收

2019-11-26 来源:eefocus

本文以STM8S103F3P6编程为例,介绍STM8S103F3P6串口中断接收。


电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:STM8S103F3P6


1.系统时钟初始化为内部16M


CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //时钟   初始化时钟为1分频 16M   2分频8M


2.初始化串口


  UART1_DeInit();

  UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

  

  UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

 

  UART1_Cmd(ENABLE);

  enableInterrupts(); 

 


3.编写主函数


void main(void)

{

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

  Init_UART1();

  enableInterrupts(); 

 /* Infinite loop */

  while (1)

  {

    if(flagpacker)

    {

      flagpacker = 0;

      

      for(unsigned char num = 0; num < length;num++)

        Send(Rxpacker[num]);

    }

  }

}

 


4.编写中断服务函数


unsigned char flagpacker;   //全局变量    是否完整接收一个数据包  

unsigned char Rxpacker[255];    //全局变量    完整数据包 

unsigned char length;    //数据长度

 INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)

 {

    /* In order to detect unexpected events during development,

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

    */

 unsigned char RxBuf;                                             //临时接收  

  static unsigned char RxData[255];//接收数据缓存区  

  static unsigned char count;                                     //串口接收数据长度  

  static unsigned char rec;  //  判断是否正在接收数据

   UART1_ClearITPendingBit(UART1_IT_RXNE);

   RxBuf = UART1_ReceiveData8();

   

  if(RxBuf == (0xcc))  //帧头

  {  

    rec= 1;  

    count = 0;  

    flagpacker = 0;  

    return ;  

  }  

  if(RxBuf  == (0xcd))  //帧尾

  {  

    rec= 0;  

    //此处可以添加校验码  

    length = count;

    for(unsigned char i = 0; i    {  

      Rxpacker[i] =RxData[i];  

    }  

    flagpacker = 1;//告诉系统已接收一个完整的数据包   

    return ;  

  }  

  if(rec)                                              //判断是否处于接收状态  

  {  

    RxData[count++] = RxBuf;  

  }    

 }

推荐阅读

史海拾趣

Everspin公司的发展小趣事

Everspin公司成立于XXXX年,总部和晶圆厂均位于美国亚利桑那州的钱德勒市。自成立以来,Everspin一直致力于磁阻随机存取存储器(MRAM)技术的研发和商业化。2006年,Everspin成功推出了业界第一款商业化MRAM产品,这一突破性的技术为数据存储领域带来了革命性的变化。

High Tech Chips Inc公司的发展小趣事

Everspin公司成立于XXXX年,总部和晶圆厂均位于美国亚利桑那州的钱德勒市。自成立以来,Everspin一直致力于磁阻随机存取存储器(MRAM)技术的研发和商业化。2006年,Everspin成功推出了业界第一款商业化MRAM产品,这一突破性的技术为数据存储领域带来了革命性的变化。

Dynastream公司的发展小趣事

随着公司业务的不断扩展,Dynastream逐渐成为了行业内的佼佼者。2006年12月,Garmin International Inc.看中了Dynastream在技术和市场方面的优势,决定将其收购为全资子公司。这一收购不仅为Dynastream提供了更多的资源和支持,也让公司有机会接触到更广阔的市场和更多的客户。

AXTAL公司的发展小趣事

创新是AXTAL公司不断发展的动力源泉。公司注重研发投入,持续推出具有竞争力的新产品和技术。同时,AXTAL还积极与高校、科研机构等合作,共同开展前沿技术的研发和应用。这些创新举措不仅提升了公司的技术实力和市场竞争力,也为整个电子行业的发展注入了新的活力。

这五个故事只是AXTAL公司发展起来历程中的一部分。它们从不同的角度展示了公司在创立、技术与品质追求、全球布局、应对市场挑战以及持续创新等方面所取得的成就和进步。未来,随着电子行业的不断发展和变革,相信AXTAL公司将继续保持其领先地位,为行业的进步和发展做出更大的贡献。

ERP公司的发展小趣事

随着云计算和大数据技术的兴起,电子智链在2010年代初期开始了技术转型。公司投入大量资源研发基于云计算的ERP系统,并在2015年成功推出“云链”系列产品。这一产品迅速受到市场的欢迎,电子智链的客户群迅速扩大,不仅涵盖了中小型企业,还吸引了众多大型电子集团。同时,公司也在国际市场上积极扩张,与多家海外企业建立了合作关系。

APLUS Products公司的发展小趣事

APLUS Products公司起源于XXXX年,当时电子行业正处于飞速发展的黄金时期。公司创始人凭借对电子技术的深厚理解和市场需求的敏锐洞察,决定专注于研发和生产高质量的电子产品。初期,公司面临着资金短缺、技术难题和市场竞争等多重挑战。然而,通过不断的技术创新和产品优化,APLUS逐渐在市场中崭露头角。

问答坊 | AI 解惑

十万火急——关于次声波检测

请高手帮忙想想怎么设计一个次声波检测系统? 我看过很多相关资料,但是还是无从下手。 另外,请高手指点一下,在哪里能够买得到电容式次声传声器?…

查看全部问答>

全国大学生电子设计竞赛大家准备好了吗?

本帖最后由 paulhyde 于 2014-9-15 09:16 编辑 鉴于竞赛在即,c8051f网络为了更好的服务于参赛选手,特别推出器件促销活动如下: 1,活动期间凡购买C8051f单片机仿真器或c8051f330学习板: 送: USB延长线(1条) 赠品详见:http://www.c80 ...…

查看全部问答>

为什么用Writefile对某ENDPOINT写数据正常,而用DeviceIOControl蓝屏

1.驱动程序写Write函数,指定固定断点endpoint0,submitURB 在应用程序调用writefile 写数据正常 2.驱动程序定义IOCTLCODE,写函数BULKWrite,获取pipenum,得到endpoint0,然后submitURB 在应用程序指定endpoint0,调用DeviceIOControl 蓝屏, 显 ...…

查看全部问答>

苦恼,初次接触VxWorks

我原来是搞VC开发的,现在因为公司需要,改搞VxWorks。但是公司没有人懂VxWorks。我原来也搞过一些单片机的开发。对VxWorks也是一知半解。 现在要做项目,不知道如何下手。现在向各位大牛们请教,如何做VxWorks开发,能提供网站、Domo、软件均可。 ...…

查看全部问答>

PLC对输入信号的脉冲频率及宽度是否有要求?为什么?

请问高手,PLC对输入信号的脉冲频率及宽度是否有要求?为什么?我是初学者。。。。。…

查看全部问答>

如何在keilc中仿真串口接收字符串.

我现在已经做出来了串口可以接收一个字符,但是字符串就是不对,哪位可以给指点一下? 就是在serial windows #1输入个字符串,进入相应的执行程序,现在就是输入一个字符成功,改成字符串时无法输入,不知道是什么原因. …

查看全部问答>

我包含了所需的LIB文件,怎么我加头文件还是加不进来?

我想用WINCE系统里的BP_LowLevelFormat函数,查了下MSDN,http://msdn2.microsoft.com/en-us/library/aa917050.aspx 上面说要加bootpart.h头文件和这个LIB:Bootpart.lib 我把这个LIB加进了project->seting->link,而且也把相应的文件放到相应的C ...…

查看全部问答>

任何修改网卡属性中的连接速度为88Mbps

在WINDOW自带的驱动,通过本地连接的属性->高级选项里有(Link speed/duplex mode),上面可以通过右边的下拉菜单来选择网卡的速度(10M/100M),和双工(全双工和半双工),那我如果修改他成为我自己定义的速度, 比如88Mbps呢? 是不是要修改.inf文件,还是在 ...…

查看全部问答>

真诚请教大家:大家现在进行嵌入式开发,用的那些芯片?希望大家能多说一点项目里用到的芯片,楼主诚心请教,并且肯定放分!

我看得大部分材料说的都是51的片子,如果直接去学arm,没有项目的支持学起来很费劲。 所以想咨询一下大家。…

查看全部问答>