历史上的今天
返回首页

历史上的今天

今天是:2025年02月14日(星期五)

正在发生

2020年02月14日 | STM8 UART中断发,中断收

2020-02-14 来源:eefocus

STM8 UART 初始化

配置STM8 UART的几个常用寄存器分别为: 

UART1_CR1:控制寄存器1 

UART1_CR3:控制寄存器3 

UART1_BRR2:波特率寄存器2 

UART1_BRR1:波特率寄存器1


利用控制寄存器1,2,3可以配置UART数据传输的具体帧格式,这里将UART配置为1个起始位,8个数据位,1个停止位,无校验位。具体操作代码如下:


      UART1_CR1=0x00;

      UART1_CR3=0x00;


在UART1_CR1中第4位,定义了数据字的长度,该位写0将设置UART为一个起始位,8个数据位,n个停止位,停止位n的数量可在UART1_CR3中设置。 

UART1_CR3的第4位和第五位用于设置停止位,这里写入00设置为1个停止位。


接下来,就是配置UART的波特率了.UART的波特率由UART的分频系数决定,波特率的计算公式为baudrate=Fmaster/UARTdiv,这里baudrate为要设置的波特率,Fmaster为主时钟频率,UARTdiv为UART分频系数。STM8上电主时钟默认使用经过8分频之后的内部16M HSI时钟源,即在不改变时钟配置的情况下,Fmaster=2MHz。 

如果要将波特率设置为9600,那么只要设置UART分频系数UARTdiv=2MHz/9600,约为:208.33333这里取整数208,其十六进制表示为0xD0,这要将这个值写入波特率寄存器中即可。


UART1_BRR2寄存器中的第0位到第3位存放了UART分频系数的第0位到第三位,UART1_BRR2寄存器中的第4位到第7位存放了UART分频系数的第12位到第15位。 

UART1_BRR1寄存器中的第0位到第7位存放了UART分频系数的第4位到第11位,


由此,我们可以得到写入波特率寄存器UART1_BRR1中的数据位0x0D,写入波特率寄存器UART1_BRR2中的数据位0x00。


另外,需要注意的是,必须先写寄存器UART1_BRR2,再写UART1_BRR1


 UART1_BRR2=0x00;

 UART1_BRR1=0x0d;


到这里就完成了对UART的配置过程,


STM8 UART 发送

对于STM8 UART发送,循环等待发送单个字节的方式这里不做详细解释。 

这里笔者利用UART的串口发送完成中断完成串口的发送过程。以提高CPU的工作效率以及降低功耗。 

首先必须要打开发送完成中断:


UART1_CR2|=(1<<7);


打开发送完成中断之后,UART会发送一个空白帧,此时在我们的中断服务处理程序中会产生一个UART发送中断,我们只需要响应这个中断,并在产生这个中断中发送我们的数据,直到所有数据发送完毕,则禁止发送中断即可。UART中断发送部分完整代码如下:


u8* UartSendBuffer;

u8 UartSendDataLength;

void UART1_SendBuffer(u8* buffer){

  UartSendBuffer=buffer;

  UartSendDataLength=strlen((const char*)buffer);

  UART1_CR2|=(1<<7);

}

#pragma vector= UART1_T_TC_vector//UART1 Tx complete 中断

__interrupt void SYS_UART1_TX_IRQHandler(void){

  u8 status=UART1_SR;

  if(status & UART_IRQ_TXE){

    if(UartSendDataLength!=0){

      UART1_DR=*UartSendBuffer;

      UartSendBuffer++;

      UartSendDataLength--;

    }else{

      UART1_CR2&=~(1<<7);

    }

  }

}


注意:笔者使用的是IAR而不是STVP,使用STVP的童鞋,需要参照代码另做修改。


STM8 UART接收

STM8 UART中断接收只需要在初始化部分使能串口接收中断,响应中断服务程序读取数据即可:


UART1_CR2|=(1<<6);

推荐阅读

史海拾趣

广东奥科公司的发展小趣事

随着企业规模的扩大和影响力的提升,广东奥科公司开始积极承担社会责任,推动可持续发展。公司注重环保和节能技术的应用,致力于生产环保型电子产品,减少生产过程中的能源消耗和环境污染。同时,广东奥科公司还积极参与社会公益事业,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

这些故事展示了广东奥科公司在电子行业中的发展历程和取得的成就,也体现了公司不断创新、追求卓越的精神。未来,广东奥科公司将继续秉持这一精神,为电子行业的发展贡献更多的力量。

Empro Technology Corp公司的发展小趣事

为了进一步提升市场竞争力,Empro Technology Corp开始实施国际化战略,积极开拓海外市场。公司设立了多个海外分支机构,与当地企业建立了合作关系,共同开拓市场。同时,公司还积极参加国际电子展等交流活动,与国际同行进行深入交流与合作。

请注意,以上故事均为虚构内容,不代表Empro Technology Corp公司的实际发展情况。如需了解该公司的真实信息,请查阅相关公开资料或联系公司官方渠道。

EZchip Technologies Ltd公司的发展小趣事

在电子行业中,人才和研发实力是企业成功的关键。EZchip深知这一点,因此一直重视人才团队的建设和研发实力的提升。公司拥有一支由业内顶尖专家和学者组成的研发团队,他们具备丰富的行业经验和深厚的技术功底。同时,EZchip还注重人才培养和引进,通过提供良好的工作环境和福利待遇吸引了一批批优秀人才加入。正是这些优秀的人才和强大的研发实力,为EZchip的持续发展提供了有力保障。

C&H Technology公司的发展小趣事

随着公司的不断发展壮大,C&H Technology开始关注可持续发展问题。公司加大了对环保技术的研发投入,推出了多款环保型芯片产品,降低了生产过程中的能耗和排放。同时,公司还积极参与社会公益事业,通过捐款、设立奖学金等方式回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。


以上便是关于C&H Technology公司发展起来的相关故事。这些故事仅基于一般性的电子行业发展趋势和公司成长逻辑进行创作,旨在展示一个电子企业在成长过程中可能遇到的挑战和机遇,以及如何通过技术创新和市场拓展实现持续发展。

Gazelle Microcircuits Inc公司的发展小趣事
这个电压通常用于主板上的某些特定元件或模块,如某些类型的内存控制器或特定芯片。需要注意的是,+5.1V并不是所有主板都会有的标准电压输出,它的出现可能取决于主板的设计和需求。
Eon公司的发展小趣事

E.ON集团的前身可以追溯到1999年,当时德国的两个能源巨头VEBA和VIAG宣布计划在2000年合并。这一合并标志着E.ON的诞生,成为德国乃至欧洲的重要能源公司。合并后,E.ON迅速崭露头角,通过整合双方的资源和优势,迅速占据了德国及欧洲能源市场的重要位置。

问答坊 | AI 解惑

国内IC厂商索引(分4页显示222条记录以英文字母开头排序,介绍了国内电子生产商的前

国内IC厂商索引(分4页显示222条记录以英文字母开头排序,介绍了国内电子生产商的前缀命名 )   型号前缀 国内生产厂商及略称 型号举例 A 河北承德电子管厂(承德电子) A7196-HP B 北京半导体器件五厂(北京5厂) ...…

查看全部问答>

PROETL PCB常用零件封装库大全下载

PROETL PCB常用零件封装库大全下载 需要的顶一下哦…

查看全部问答>

《新型电源电路应用实例》作者:薛永毅

再来交流点资料。尊重版权,勿作商用。 …

查看全部问答>

关于视频信号调理问题。

复合视频基带信号(CVBS)只是用负脉冲进行同步的。我在调试一个视频处理电路时,需要提取这个同步。但实际中遇到如下问题: 视频信号是经交流耦合到ADC采样的,这样在明场景和暗场景下负脉冲的最低值会变化。我首先想到的是数字处理的方法,提出 ...…

查看全部问答>

2000/XP系统下的U盘万能驱动是如何实现的?

在WIN98称霸的时代,每次使用U盘拷资料都是首先安装U盘厂商提供的驱动或者万能驱动程序,然后U盘才可以被系统识别,那个时候也没有这个疑问,后来到了2000/XP时代,安装U盘已经完全傻瓜式了,厂商不在需要提供驱动程序,直接把U盘插在USB口上就能使 ...…

查看全部问答>

cximage600_ce绘制图片闪烁

cximage600_ce在连续绘制多幅图片的时候会不停的闪烁,如果要用双缓冲修改的话,应该改哪个地方呢?…

查看全部问答>

STC12C5A32S2这个片子,串口下载的时候,无法下载。出现以下提示

这个片子我按照厂家提供的下载电路搭建的,第一次下载成功了,再下载就无法下载了,上次下的程序还再执行,只要上上电就执行程序,就是不下载,我也按照顺序,先点下载然后再上电,还是不行,哪位给解决一下,谢谢。 Chinese:正在尝试与 MCU/单片 ...…

查看全部问答>

请教如何在arm9上使用mysql数据库

要做个项目,以arm9为基础,控制器是别人开发的,提供接口给我们,我们负责应用程序的开发,自己做的程序需要查询mysql数据库,所以想把mysql集成到板子里去,想请教下这么做是否可行,可行的话要如何做,能推荐几本参考书?谢谢…

查看全部问答>

关于100pin的103xCDE的FSMC问题

因为100pin的没有PF和PG脚,所以貌似FSMC只能用在NOR Mux和NAND 16bit两种模式下了。24位的地址也只能接16M的FLASH,但是片选是不是就只有一个PD7了?那岂不是只能接一片?即使用NAND也就只能接两片8bit的了。请版主给说说,死等哈 ...…

查看全部问答>

SPICE模型库网址

SPICE模型库网址http://www.intusoft.com/models.htmhttp://www.cadence.com/products/orcad/downloads/pspice_models/index.aspxhttp://www.aplac.hut.fi/aplac/models/main.htmlhttp://www.maxim-ic.com/tools/spice/http://www.altera.com.cn/su ...…

查看全部问答>