stm8s中UART的用法(四种UART中断)

2019-09-17来源: eefocus关键字:stm8s  UART  中断

一、应用实例


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

      };

}


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


三、中断设置

关键字:stm8s  UART  中断 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic474715.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8L串口中断进不去
下一篇:STM8S UART串口使用中断收发数据

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ST系列STM8S003F3P6单片机芯片介绍
众所周知,意法半导体的stm8s系列主流8位微控制器适于工业、消费类和计算机市场的多种应用,特别是要实现大批量的情况。基于STM8专有内核,STM8S系列采用ST的130纳米工艺技术和先进内核架构,主频达到24 MHz,处理能力高达20MIPS。嵌入式EEPROM、RC振荡器和全套标准外设为设计者提供了稳定且可靠的解决方案。相关工具链,从经济型探索套件到更复杂的评估套件和第三方工具,为利用STM8S微控制器进行开发提供了极大方便。STM8S系列包括四个产品线,具有不同特性,但是保持了全面兼容性和可升级性,从而减少了未来产品设计变更。•STM8S003/005/007超值型是入门级产品,具有基本功能。•STM8S103/105基本型
发表于 2020-07-21
<font color='red'>ST</font>系列<font color='red'>STM8S</font>003F3P6单片机芯片介绍
STM8S如何实现Atomthreads最低功耗
(status);  }针对STM8我们最自然想到的是在其中加一个wfi,STM8进入wfi模式几乎不会影响任何外设的运行。以STM8S105K4为例,其进入该模式的典型电流是1.8mA。这个电流,用一节2000mA手机供电,理论上也最多能坚持46天,才一个月多点。这个记录太差了。STM8还有一个HALT模式,这是该芯片的最低功耗模式,电流是uA级别。但是该模式有诸多限制,进入该模式系统几乎所有的clock都停止,你的TImer,adc,uart等等全部停止,除了AWU。atomthreads如果你在idle直接进入HALT,因为基本只有外部中断可以唤醒退出这个模式,当系统醒来了,请你想想,你的系统心跳还准么?你的应用线程
发表于 2020-07-21
<font color='red'>STM8S</font>如何实现Atomthreads最低功耗
三分钟看懂stm8s单片机实现多通道转换
今天在使用stm8s单片机的AD功能,单片机上有AN0到AN9十个通道。想只用其中的三路AN5到AN7。//ADC初始化void ADC_Init(void){ADC_CR1 = 0x50;ADC_CR2 = 0x38;ADC_TDRL = 0xE0;//禁止施密特触发}unsigned int Read_ADC_Temp(unsigned channel){unsigned int i,ADtemp;ADC_Init();//ADC_CSR = 0x00;ADC_CSR = channel;ADC_CR1 = 0x01;// CR1寄存器的最低位置1,使能ADC转换for(i = 0;i 《 300;i
发表于 2020-07-21
三分钟看懂<font color='red'>stm8s</font>单片机实现多通道转换
STM8S的定时器周期中断时钟测试系统
  1 问题  在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变高了;如果加上,则TIM2的功能实现跟预设定相同(产生1Hz的PWM),但是TIM1的周期就变长了;  尝试了很多测试,均无效(买的开发板和另一块gs自画板测试也都一样)。  2 尝试  因为STM8S默认使用内部16M高速RC振荡器,且8分频,则系统启动主时钟为2M。即CLK_CKDIVR = 0X18;,如果再去赋值CLK_CKDIVR |= 0X08; 则主时钟还是不变即0X18,但是如果赋值为CLK_CKDIVR
发表于 2020-07-21
<font color='red'>STM8S</font>的定时器周期中断时钟测试系统
STM8S利用STVP方式进行IO复用分析
1 说明STM8S的IO复用用程序代码配置起来比较麻烦,一般是操作flash来操作opTIon byte字节,配置寄存器更加麻烦,可以使用STM 标准外设驱动库来设置。本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置。 因为FLASH保存的数据是掉电不丢失的,先用STVP把OpTIon Bytes擦写好后,再用STVD仿真器烧写程序就可实现IO复用了。程序方式配置IO复用见这里2 配置流程【step1】打开STVP软件【step2】打开我们需要下载的xxx.s19文件,CTRL+F5(File-》Ram Exec)【step3】配置需要复用的引脚IO口的复用功能主要配置在于AFR0-AFR7。这里我们配置定时器
发表于 2020-07-21
<font color='red'>STM8S</font>利用<font color='red'>ST</font>VP方式进行IO复用分析
采用STM8S内部时钟产生PWM(TIM2)
  1 说明  采用STM8S内部时钟(HSI);  PWM模式2;  占空比为50%,频率为2Hz(方便测试LED灯);  PD2口外接LED灯,PD2口输出PWM波;  系统时钟初始化很重要:CLK_CKDIVR |= 0x08;  2 代码
发表于 2020-07-14
采用<font color='red'>STM8S</font>内部时钟产生PWM(TIM2)
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved