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

发布者:chi32最新更新时间: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  中断 引用地址:stm8s中UART的用法(四种UART中断)

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

推荐阅读最新更新时间:2024-11-10 23:08

STM32中断优先级库的使用方式
为什么中断要有优先级 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行 抢断式优先响应,俗称中断嵌套。 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应 非抢断式响应(不能嵌套)。 判断中断是否会被响应的依据 首先是占先式优先级,其次是副优先级; 占先式优先级决定是否会有中断嵌套; Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。
[单片机]
stm32NVIC与外部中断
实现功能:外部中断线0(PA0)与线15(PA15)分别连接到两个按钮,一个按钮用于产生上升沿,另一个用于产生下降沿,两个中断函数里均对PA8口连接的led灯取反,同时PD2连接的led灯随意延时取反指示程序运行。 这次我用了官方提供的例程来构建自己的工程,这样可以省下不少时间,而且减少了出错率,调试起来容易多了。 首先是stm32中断与外部中断的概念。 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持
[单片机]
stm32NVIC与外部<font color='red'>中断</font>
MSP430单片机硬件知识-中断
中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。MSP430的几乎每个外围模块都能够产生中断,为MSP430针对事件(即外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。由于CPU的运算速度和退出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态。 MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。 (1)系统复位的中断向量为0xFFFE。 (2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软
[单片机]
AVR单片机学习(七)异步串行口UART
串行通讯技术概述 异步串行通讯原理 UART与电脑的通讯 M16的USART 中断方式使用USART步骤 一、串行通讯技术概述 串行通讯的通俗定义: 一位发送一位(相对与并行,)当然通过 位同步 帧同步 串行通讯的分类 同步串行通讯 时钟线、数据线、通过时钟保持数据同步 SPI,IIC 属于同步串口通讯 异步串口通信 只有一根数据线,通过波特率保证数据同步(顾名思义没有时钟线只有数据线) UART 无线通信一般均为异步串行通信(相对于无形之中只能有一根天线) 波特率 每秒发送码元时间宽度为(1/9600)S 大概是在100个微妙左右 发送方按照
[单片机]
AVR单片机学习(七)异步串行口<font color='red'>UART</font>
MSP430F5529火箭板 --> 按键中断控制LED实验
实验目的:   测试评估板上的按键和LED 实验内容:   1、按下s1一次红灯亮1s后熄灭   2、快速按下s1两次绿灯亮1s后熄灭 bsp_led.h #ifndef _BSP_LED_H #define _BSP_LED_H #include msp430.h #define Set_Bit(val,bitn) (val |= (/*1 */(bitn))) #define Clr_Bit(val,bitn) (val &= ~(/*1 */(bitn))) #define Get_Bit(val,bitn) (val & (1 bitn)) //LED1 #define LED1_RED_DIR
[单片机]
MSP430F5529火箭板 --> 按键<font color='red'>中断</font>控制LED实验
PLC中断指令及例程
一、中断、中断事件概念 我们在日常工作中,按照正常的流程来工作,如中途发生紧急情况或相隔一定时间去兼顾另一项工作,就要先停下手头工作去处理紧急事件或另一项工作,这个停下工作就叫中断,所处理的紧急事件或另一项工作,就叫做中断程序,处理完问题再回过来继续原来的工作。 PLC同样也有中断,CPU正常执行程序,如中途发生的系统认定的动作或参数达到设定要求,则中断程序执行,去处理所设定的程序,完成后返回来继续执行原来的程序。 PLC系统已规定好了一些中断动作,如输入点I0.0、I0.1发生了接通(上升沿)或关断(下降沿),或时间继电器设定时间已到时,这些所发生的动作——叫中断事件,PLC给每个中断事件编了号,称为中断事件号,如I0.
[嵌入式]
PLC<font color='red'>中断</font>指令及例程
循迹小车计数器0中断的编写
一,对于中断的理解 CPU在处理某一时间A时,发生了另一事件B请求CPU迅速去处理(发生中断),CPU暂时中断当前工作,转去处理事件B(中断响应和中断服务),待CPU将时间B处理完毕后,再回到原来事件A被中断的地方继续处理(中断返回)。 以循迹小车的左转中断为例 CPU在处理循迹程序时,中断左转请求CPU迅速去处理,CPU暂时停止处理循迹程序,转去处理中断左转,待CPU将该程序处理完毕后,再回到循迹程序中断的地方继续处理循迹程序
[单片机]
循迹小车计数器0<font color='red'>中断</font>的编写
STM32中断使用笔记
1.GPIO 的正确设置 GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOD clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); /* Configure PD.03, PC.04, as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPI
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved