历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2019年09月17日 | stm8s中UART的用法(四种UART中断)

2019-09-17 来源:eefocus

一、应用实例


1.1系统功能


 使用STM8的USART进行自发自收(将发送引脚RXD短接到接收引脚TXD),发出数据:0,1,2。。。数据,能接收到自己发出的数据:0,1,2。。。使用LED作出简单指示!


1.2硬件设计

LED控制电路原理图

UART电路原理图


1.2软件设计


/*********************************************************************

目标系统: 基于STM8单片机 

应用软件: 

*********************************************************************/


/*----------------------------------------------------------------------

实验内容:

USART自发自收,使用PB口的LED指示接收到的数据,观察是否与发送的数据一致。

----------------------------------------------------------------------

硬件连接:  

将MCU.RXD与MCU.TXD使用短路帽短接,将PB口的LED指示灯使能开关切换到"ON"状态。

----------------------------------------------------------------------*/


#include


#define LED_DDR  PB_DDR

#define LED_PORT PB_ODR

#define LED_CR1  PB_CR1

#define LED_CR2  PB_CR2


void Init_UART3(void)

{

      UART3_CR1=0x00;

      UART3_CR2=0x00;

      UART3_CR3=0x00;

      // 设置波特率,必须注意以下几点:

      // (1) 必须先写BRR2

      // (2) BRR1存放的是分频系数的第11位到第4位,

      // (3) BRR2存放的是分频系数的第15位到第12位,和第3位

      // 到第0位

      // 例如对于波特率位9600时,分频系数=2000000/9600=208

      // 对应的十六进制数为00D0,BBR1=0D,BBR2=00


      UART3_BRR2=0x00;

      UART3_BRR1=0x0d;


      UART3_CR2=0x2c;//允许接收,发送,开接收中断

}


void UART3_sendchar(unsigned char c)

{

      while((UART3_SR & 0x80)==0x00);

      UART3_DR=c;

}


@far @interrupt void UART3_Recv_IRQHandler (void)

{

      unsigned char ch;

      ch=UART3_DR;

      LED_PORT=ch;

      return;

}


void main(void)

{

      unsigned char i=0;


      LED_DDR=0XFF;

      LED_CR1=0XFF;

      LED_CR2=0X00;

      Init_UART3();

      _asm("rim");//关中断


      while(1)

      {

            UART3_sendchar(i);

             i++; 

      };

}


二、特别注意波特率的计算设置方式


三、中断设置

推荐阅读

史海拾趣

Custom LeatherCraft Manufacturing Co Inc公司的发展小趣事

CLC非常重视客户服务。他们设立了专门的客户服务部门,为客户提供咨询、售后支持和定制服务。无论客户遇到什么问题或需求,CLC都会尽全力解决和满足。这种贴心的服务赢得了客户的信任和忠诚,也促进了品牌的持续发展。

CP Technology Inc公司的发展小趣事

为了进一步扩大市场份额,CP Technology Inc积极寻求与行业内其他公司的战略合作。公司先后与多家知名企业签订了合作协议,共同开发新产品、拓展新市场。这些合作不仅为CP Technology Inc带来了更多的资源和机会,也提升了公司在行业内的地位和影响力。

Custom Components Inc公司的发展小趣事

Custom Components Inc(简称CCI)公司的发展历程始于一个技术突破。在公司成立的初期,CCI的研发团队成功开发了一种新型的电子元件,这种元件在性能和成本上均优于市场上的同类产品。这一技术突破立即引起了行业的关注,多家电子设备制造商纷纷向CCI抛出橄榄枝,希望建立长期合作关系。

随着市场需求的不断增长,CCI逐步扩大了生产规模,并通过技术创新不断提升产品质量。同时,公司还积极开拓国际市场,与海外客户建立了稳定的业务往来。凭借卓越的产品性能和良好的市场口碑,CCI逐渐在电子行业中崭露头角。

Bud Industries公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保和可持续发展的要求也日益严格。CCI积极响应这一趋势,将绿色环保理念融入公司的战略规划和日常运营中。

公司不仅采用了环保材料和绿色生产工艺来降低产品对环境的影响,还通过优化生产流程和资源利用等方式降低能耗和排放。此外,CCI还积极参与行业环保组织和公益活动,推动整个行业向更加绿色、环保的方向发展。

Defender Security公司的发展小趣事

近年来,生成式AI技术的快速发展为网络安全带来了新的变革。Defender Security公司紧跟这一趋势,将生成式AI技术应用于网络安全领域。他们利用生成式AI技术来模拟和预测网络攻击行为,从而提前发现潜在的安全威胁。通过不断的技术创新和应用实践,Defender Security在网络安全领域取得了显著的成果。

Delta Electronics Manufacturing Corp公司的发展小趣事

随着公司实力的不断增强,Delta开始积极拓展全球市场。公司通过设立海外分支机构、参加国际展会等方式,不断拓宽销售渠道,提升品牌知名度。同时,Delta还与国际知名企业展开合作,共同开发新产品,扩大市场份额。如今,Delta的产品已远销全球多个国家和地区,成为国际电源市场的领军企业之一。

问答坊 | AI 解惑

51单片机C语言控制与应用教程

51单片机C语言控制与应用教程,很好的,初学者用…

查看全部问答>

难题请教,51从外部flash的FFFD地址启动?怎么做啊

我有一颗芯片 ip210w由 8051内核和一个MAC组成 芯片手册有一句话:CPU starts up and runs instructions at address 0xFFFD of external Flash. 就是这句话把我郁闷了好久,怎么烧程序都不行。CPU都跑不起来。 请教高手如何让我的CPU跑起来,谢 ...…

查看全部问答>

程序执行时间问题

问个VC问题  (应用程序通过pci采集板读数据) 应用程序的WM_TIMER在电脑刚开机(开机2,3分钟左右)会被阻塞吗? 我有段定时器(100ms)的执行程序,我想知道这段程序的执行时间。开始time1=GetTickCount(),末尾time=GetTickCount()-ti ...…

查看全部问答>

不能捕捉到CArchiveException 请各路英雄指教

大家好, 最近我遇到一个问题,在我的应用程序中(MFC工程), 里面有一句代码,是对文件读写的,如果这儿有一个空文件(里面什么内容也没有), 但我们又对它进行了读操作(调用CArchive >>进行读出),那么这儿一定会有个 CArchiveException异 ...…

查看全部问答>

MC45 GPRS模块如何实现自动重连 总是在线???

1.如题 ```` 2.还有就是如果一段时间没有数据传输 是不是就自动断开了? 3.断开后就可以继续发AT指令了么? 4.谢谢。。。。。…

查看全部问答>

EVC4.0编译后生成的EXE在目标板上执行 出错 乱码

1、开始我使用的共享MFC库出错,后来我使用的静态MFC库,不出错了,,,但我在PB里已经向目标板加上了MFC组件,不知道为什么出错 2、我生成的EXE文件里如果有中文会显示乱码,不如应该如何解决 先谢谢了…

查看全部问答>

WIN CE开发问题启蒙,希望得到帮助

谁有好的WIN CE的书籍或课程视频资料,介绍一下,我用VS2005的!最好都有链接地址,可以看看,简介也好!…

查看全部问答>

今天调试板子,发现不法连接

今天调试板子,发现无法连接。第一个想到的是电源电压(焊DSP之前有测过电压都是对的)。 把所有的电容测了,发现RTS管脚处,用了一个RC 滤波电路。C上电压变成2.75V。去掉电容,DSP可连接。 将原本的4.7K,电阻换小后,电压上抬到3V左右。DSP工 ...…

查看全部问答>

求助:任务ready不执行?

求助:建立了一个任务,就是不停进行打开、写、关闭、删除文件的操作,处于ready的状态,同时只有tShell处于ready状态,但spy后发现没有任何任务占用tick时间,中断也没有。该任务没执行。 出现这种情况是在建立任务后,在任务中输入i等指令后,就 ...…

查看全部问答>

自己总结的ucos引发任务调度的情况,求补充,求拍砖

1.最基本的:系统开始运行OSStart()会引发一次调度 2.创建一个新任务时,如果此时系统在运行状态,则引发一次调度。3.某任务调用挂起函数挂起自己后引发一次调度。 4.调用恢复任务函数OSTaskResume()引发一次调度。 5.任务延时时,引发一次 ...…

查看全部问答>