历史上的今天
返回首页

历史上的今天

今天是:2025年06月27日(星期五)

正在发生

2020年06月27日 | STM8 UART接收中断程序

2020-06-27 来源:eefocus

系统功能

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


硬件设计

  

LED控制电路原理图

 

UART电路原理图


软件设计

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

微 雪 电 子 WaveShare http://www.waveShare.net

目标系统: 基于STM8单片机 

应用软件: Cosmic CxSTM8 

说 明: 若用于商业用途,请保留此段文字或注明代码来源

深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 

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


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

实验内容:

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++; 

      };

}


系统调试

短接RXD与TXD能接收到自己发送的数据,断开短接没有接收到数据。

系统不断发送数据:0,1,2。。。若正常接收,将收到0,1,2。。。。

用LED作数据指示,LED往上加,说明系统程序正常执行。

推荐阅读

史海拾趣

汇科公司的发展小趣事

与山东汇科电气技术有限公司不同,苏州汇科技术股份有限公司成立于2000年,是一家专业从事开发、设计、制造各式工业窑炉的技术型企业。公司位于江苏省常熟市辛庄工业开发区,凭借对技术的执着追求和对品质的严格把控,逐渐在行业中崭露头角。多年来,苏州汇科技术股份有限公司通过不断的技术创新和产品升级,赢得了客户的广泛认可和市场的信赖。

屹晶微(EG)公司的发展小趣事

屹晶微的创始人黄米龙,原本在发电厂从事电气运营工作长达八年。这段经历让他对电子领域有了深入的了解和浓厚的兴趣。然而,他并没有满足于现状,而是看到了中国芯片产业的巨大潜力和发展空间。于是,在2007年,他毅然决定从发电厂辞职,利用自己的积蓄和借来的资金,在台州创立了屹晶微电子有限公司。

在创立初期,屹晶微面临着资金短缺、技术落后和市场竞争激烈的困境。但黄米龙凭借对电子行业的深刻理解和坚定的信念,带领团队克服了种种困难。他们不断引进先进技术和设备,加强研发力量,提升产品质量。经过几年的努力,屹晶微逐渐在芯片设计领域崭露头角,并成功推出了多款具有自主知识产权的芯片产品。

EICHHOFF公司的发展小趣事

EICHHOFF公司成立于XX世纪XX年代,当时由创始人XXX在德国的一个小镇上开设了一个小型的电子元件加工厂。由于XXX对电子技术的热爱和对市场需求的敏锐洞察,他专注于生产高质量的连接器和其他电子组件。在初创阶段,EICHHOFF的产品主要供应给当地的电子制造商和维修店。随着口碑的逐渐传播和产品质量的不断提升,公司开始接到来自更广泛地区的订单。

为了应对不断增长的市场需求,EICHHOFF公司逐步扩大了生产规模,并引入了先进的生产设备和技术。同时,公司也注重人才培养和团队建设,吸引了一批有才华的工程师和技术人员加入。这些努力使得EICHHOFF在电子行业中逐渐崭露头角。

Acculin Inc公司的发展小趣事

Acculin Inc最初是一家专注于电子元器件研发的小型企业。随着物联网和智能家居的兴起,公司敏锐地捕捉到了市场的机遇,开始研发一款低功耗、高集成度的传感器芯片。经过数年的努力,Acculin成功推出了这款芯片,并凭借出色的性能获得了市场的认可。随后,公司逐渐扩大了产品线,涵盖了多个电子领域,成为行业内技术创新的领军者。

科达嘉CODACA公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

HCH Co公司的发展小趣事

背景:随着全球对环境保护和可持续发展的重视程度不断提高,HCH Co公司积极响应号召,开始了绿色转型之路。公司致力于开发环保型电子产品和绿色生产技术,以减少对环境的影响。

发展:通过不断的技术创新和生产工艺的改进,HCH Co公司成功推出了一系列环保型电子产品,如可回收材料制成的外壳、低功耗的显示屏等。同时,公司还加强了废弃电子产品的回收和再利用工作,实现了资源的循环利用。绿色转型不仅提升了公司的社会形象,也为公司的长期发展注入了新的动力。

问答坊 | AI 解惑

经典的异步与同步清零D触发器Verilog表达

带异步清0、异步置1 的D 触发器module DFF1(q,qn,d,clk,set,reset);input d,clk,set,reset;output q,qn;reg q,qn;always @(posedge clk or negedge set or negedge reset)beginif (!reset) beginq <= 0; //异步清0,低电平有效qn <= 1;endelse ...…

查看全部问答>

在wince5.0中实现ipinip的问题!帮忙啊!!!谢谢大家了!

是这样的。我的东西需要加到另外一个公司的两个设备中间,他们又不告诉我们他们是怎么做的,他们自己的可以做到。 所以我们在他们能够做到的两边进行了数据的采集。发现,接受的数据是这样的结构:ip header1 + ip header2 + TCP header.然后发出 ...…

查看全部问答>

串口通信问题

at89S52  12M晶振 波特率为9600 发送为 1,2,3,4,5,6,7,8,9 串口助手显示为 81,82,83,84,85,86,87,88,89 请问各位赐教!…

查看全部问答>

高人见解: linux系统直接擦除块设备命令?

我的要求:直接写脚本在文件系统中操作开发板上的块设备,包括擦除和写入,以实现远程开发板升级 从网络搜索到的相似问题是:     eraseall /dev/mtd2     cp ../../fileName /dev/mtd2 我试了下.  CP倒是可以拷贝 ...…

查看全部问答>

招聘兼职C/C++,VC,Java软件工程师和硬件工程师

北京港震机电技术有限公司是注册于北京市中关村科技园中的一家高新技术企业,由中国地震局地震预测研究所的下属企业与香港企业共同合资建立。作为集产品研发、制造和提供系统解决方案的高科技实体,北京港震公司致力于数字化地震台网(台站)系统以及 ...…

查看全部问答>

我用的HP的Pocket PC,型号是hx2400,如何定制合适的SDK,高手请教教我。困扰了2天了。

我是个菜鸟,现在用EVC4.0开发PDA上的程序,目前有设备,但是没有相应的SDK,这就导致写好的程序无法在合适的环境下编译,我试着自己用PB建立SDK,但还是不行。从网上下载了微软的Pocket PC2003的SDK,但是装上后在EVC下的平台选择中没有该项。在网 ...…

查看全部问答>

累死我了,下午又整了一个程序……为了博客比赛不容易啊..

只好凑凑文章数了~~~~~~~~~如果要下载程序测试包,请点击:http://blog.ednchina.com/computer00/143918/message.aspx   在万利学习板自带的演示例程中,有几个USB的例程。如果我们想实现一个USB功能,可以拿里面的例子来改。& ...…

查看全部问答>

应该是40K的PWM为什么结果是20K?

有如下两个程序,RCC_Configuration用于配置Clock,Timer2_Configuration配置TIM2,能在A0管脚输出10K的PWM波形;把RCC_PCLK1Config(RCC_HCLK_Div4)改成RCC_PCLK1Config(RCC_HCLK_Div2),能输出20K的PWM波,符合期望;但是改成RCC_PCLK1Config(R ...…

查看全部问答>

stm32f103vbt6如何读取图片信息

请见各位 stm32f103vbt6芯片如何读取usb摄像头的图像信息 如何打包再发送出去啊 有相关程序吗 谢谢 可以发我邮箱ahlbzy@126.com…

查看全部问答>

F28335的I2C总线问题!

搞了三个星期了,I2C总线模块还是没搞通,参考了TI的例程,也没用,以前F2812时单用IO口模拟过I2C总线,自信对I2C总线协议比较清楚,但I2C寄存器值总是不对,郁闷中。。。。。。 有哪个大侠曾经搞过的,可否提些宝贵意见?…

查看全部问答>