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

原创 2015年06月18日 15:51:40

一、应用实例

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 <STM8S207S8.h>

#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的使用:串口通信!

串口通信是单片机学习的一个最基本、最重要的功能之一。串口通信可以间接的当做调试接口使用,实现单片机与电脑之间的通信。当然可以与一些模块(比如蓝牙、wifi)通信,也可以作为和其他单片机通信的工具。 ...
  • DevinTT
  • DevinTT
  • 2016年09月12日 13:05
  • 13372

STM8 UART2

#include"stm8s.h" #include"stm8s_conf.h" #include"UART2.h" #include"stdarg.h" void UART2_Co...
  • Seeker_ZeroOne
  • Seeker_ZeroOne
  • 2013年09月11日 11:12
  • 2089

STM8学习笔记-----uart1串口中断

uart1串口发送、接收中断。 目标:串口接收1,点亮led1,接收2点亮led2,接收到其他字符关闭led1和led2。 步骤如下: 1、编写led.h和led.c文件。略 2、编写...
  • lwenqu
  • lwenqu
  • 2017年08月30日 20:58
  • 738

STM8S_004_UART基本收发数据

Ⅰ、写在前面做软件开发的人都知道打印信息的重要,说到打印信息,我们就不得不说UART串口打印。做单片机开发的人,打印信息主要的来源就是UART串口打印。因此,关于UART相关的知识就比较重要。 pri...
  • ybhuangfugui
  • ybhuangfugui
  • 2017年05月05日 22:47
  • 4005

STM8 UART中断发,中断收

STM8 UART 初始化配置STM8 UART的几个常用寄存器分别为: UART1_CR1:控制寄存器1 UART1_CR3:控制寄存器3 UART1_BRR2:波特率寄存器2 UART1_...
  • yuanquanzheng
  • yuanquanzheng
  • 2017年01月23日 16:46
  • 2307

STM8S105中断模式串口收发一组数据

  • 2016年04月15日 15:21
  • 1.66MB
  • 下载

STM8S103之串口中断接收

本篇博文最后修改时间:2017年08月4日 17:23。 一、简介 本文以STM8S103F3P6编程为例,介绍STM8S103F3P6串口中断接收。 二、实验平台 电脑平...
  • qq_18842031
  • qq_18842031
  • 2017年07月10日 21:47
  • 2303

STM8S105 串口中断发送

  • 2014年08月02日 10:03
  • 33KB
  • 下载

STM8固件库+IAR 之--UART3

本来想先写定时器1来着,可手头上正好有串口的程序,整理整理先贴上来呗~首先到stm8s_conf.h把 #define _UART3 (1) 打开,否则uart3不能用,重新编译一下静态库贴main....
  • wilsub
  • wilsub
  • 2011年04月06日 21:16
  • 2904

STM8S处理串口中断注意

//溢出处理-如果发生溢出需要先清除ORE,再读DR寄存器 则可清除不断入中断的问题 if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET) { ...
  • lan120576664
  • lan120576664
  • 2014年02月07日 11:06
  • 6322
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:stm8s中UART的用法(四种UART中断)
举报原因:
原因补充:

(最多只允许输入30个字)