本篇博文最后修改时间:2017年08月04日 18:29。

一、简介

本文以STM8S103F3P6编程为例,介绍STM8S103F3P6串口中断发送。

二、实验平台

电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:STM8S103F3P6

三、版权声明

博主:_懵懂

声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。

原文地址:http://blog.csdn.NET/qq_18842031

懵懂之MCU交流群:136384801

四、实验前提

1、在进行本文步骤前,请先安装IAR  EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。

五、基础知识

暂无

六、源码地址

暂无

七、实验内容

1.系统时钟初始化为内部16M

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //时钟   初始化时钟为1分频 16M   2分频8M

2.初始化串口

void Init_UART1(void)
{UART1_DeInit();                            //恢复串口所有寄存器UART1_Init((u32)9600,                      //波特率9600UART1_WORDLENGTH_8D,            //8位UART1_STOPBITS_1,               //停止位1UART1_PARITY_NO,               UART1_SYNCMODE_CLOCK_DISABLE,   UART1_MODE_TXRX_ENABLE);UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);  //使能接收中断
//  UART1_ITConfig(UART1_IT_TC, ENABLE);       //使能发送中断  发送中断使能是那里需要才使能UART1_Cmd(ENABLE);
}

3.编写查询方式发送数据入口

void UART1_Send(uint8_t *dat,uint8_t len)
{uint8_t i = 0;for(i=0; i<len; i++){while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));UART1_SendData8(*dat++);}
}

4.编写中断方式发送数据入口

uint8_t Rxd_buf[20];       //接收数组
uint8_t Rxd_len;            //接收长度
uint8_t Rxd_F;              //接收标志位
uint8_t Txd_buf[20];       //发送数组
uint8_t Txd_len;            //发送长度
uint8_t Txd_F;              //发送标志位void Send(uint8_t dat)
{while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));UART1_SendData8(dat);
}
uint8_t Set_UART1Interrupt(uint8_t *lV_dat,uint8_t lV_len)
{if(Txd_len != 0){return FALSE;}for(Txd_len=0;Txd_len <lV_len;Txd_len++)  //将数据装到全局变量中Txd_buf[Txd_len]=lV_dat[Txd_len];UART1_ITConfig(UART1_IT_TC, ENABLE);       //使能发送中断  return TRUE;
}

5.编写主函

void main(void)
{CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //内部时钟16MInit_UART1();enableInterrupts();UART1_Send("Hi\n",3);                //查询发送Set_UART1Interrupt("Hello\n",6);     //中断发送数据while(1);
}

6.编写中断服务函数

 INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17){static uint8_t lV_num;              //记录已经发送数据的长度Send(Txd_buf[lV_num++]);if(lV_num == Txd_len)                      //发送数据的长度和需要发送数据的长度相等  就关闭发送中断{lV_num = 0;(void) memset(Txd_buf,0,Txd_len);Txd_len = 0;UART1_ITConfig(UART1_IT_TC, DISABLE);       //禁止发送中断  }return; }

STM8S103之串口查询发送+中断发送相关推荐

  1. STM32串口发送中断

    SECTION 2 先说TC.即Transmission Complete.发送一个字节后才进入中断,这里称为"发送后中断".和原来8051的TI方式一样,都是发送后才进中断,需要 ...

  2. 【串口发送中断】基于赛元单片机使用三合一串口的UART功能

    文章目录 前言 中断的方式发送数据 代码示例 准备工作 宏定义及全局变量 初始化 中断服务函数 ==发送逻辑函数== 启动发送函数 总结 前言 关于赛元单片机触摸的那篇文章确实帮助到过一些网友,后来有 ...

  3. ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收

    串口发送部分代码: //通过信号量的方法发送数据 void usart1SendData(CPU_INT08U ch) {OS_ERR err;CPU_INT08U isTheFirstCh;OSSe ...

  4. 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭

    实验目的: 实现芯片串口收发数据,按键中断串口发送数据:按下按键,向串口发送数据,并通过虚拟终端显示出来: 串口接收数据中断来控制LED亮/灭:通过串口助手向MCU发送数据,"A" ...

  5. 基于STM32F103RCT6实现串口中断发送,使用环形队列

    文章目录 一.开发环境 二.串口中断发送原理 三.实验现象 四.完整源码 五.后记 一.开发环境 /************************************************** ...

  6. 【HAL库】STM32F407ZGT6实现串口中断发送和接收

    ** [HAL库]STM32F407ZGT6实现串口中断发送和接收 (保姆级教写代码1) ** 前言 根据近期所做的项目,想给大家分享一些有关STM32的各类通信方式的代码教程,都是基于STM32HA ...

  7. STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化

    STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化 基于STM32H743VI 使用STM32CUBEMX两年了,始终觉得这个工具非常的方便,但因为不是经常使用,导致有些 ...

  8. STM32 USART串口DMA 接收和发送的源码详解!

    硬件平台:STM32F103ZET6: 开发环境:KEIL 4: 先说说应用通讯模式,串口终端的工作方式和迪文屏差不多,终端被动接受MCU发的指令,终端会偶尔主动发送一些数据给MCU(像迪文屏的触摸信 ...

  9. 8051单片机的中断发送

    最近使用c8051做开发,串口程序移入工程时,整个程序竟然不跑了,加断点,调试,发现在串口查询发送出了问题,程序在查询发送完毕的时候,竟然死在这,就是while(TI0==0)这地方,用其它型号单片机 ...

  10. 关于串口通讯查询与中断两种方式

    串口通讯有查询与中断两种方式 2011-09-13 13:31 我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下: ...

最新文章

  1. HTTP头信息中的参数Etag
  2. python从网上获取数据失败怎么解决_求助:scrapy爬取数据失败,反复调试都不成功...
  3. 网站快照更新不及时有什么好的解决办法吗?
  4. 老虎Sitemap生成器 0.2
  5. 电脑技巧:如何解决99%的电脑防弹窗广告?
  6. 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。...
  7. DoYourData AppUninser Mac版(Mac应用卸载工具)
  8. 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng
  9. 以前做过一个光标代码的梦,貌似也是个预言梦
  10. 信源编码与信道编码区别(十一),Android面试题集2021版
  11. C语言:文件的读写操作
  12. CIKM 2020 | FANG:利用社会语境及其图表示进行假新闻检测
  13. python unpack java,Java中的python struct.unpack - java
  14. 离DApp的爆发还差什么?|链捕手
  15. RedHat7.8安装Microsoft Edge浏览器
  16. 在线JS运行 JavaScript IDE
  17. mysql数据库常见错误及解决方法
  18. 电子元器件分销业ERP系统供应链解决方案
  19. WordPress简约响应式导航主题VIK
  20. 基于MCGS与PLC的四路抢答器

热门文章

  1. 微软更新Win10工具Media Creation Tool
  2. Ognl表达式的一些用法
  3. 水经注地图下载器下载谷歌地图
  4. 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
  5. android SDK安装以及环境变量配置(windows)
  6. JAVA学习笔记(七)细胞自动机(带注释)
  7. 微信小程序生成二维码方法接口集合
  8. 数据处理(二):wgs84坐标的UTM投影
  9. 【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引
  10. 我们开发中常用的常用浏览器常用插件,比如FeHelper,React Developer Tools, Vue Devtools,沙拉查词,Infinity,OneTab,AdGuard等