STM8S103之串口查询发送+中断发送
本篇博文最后修改时间: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之串口查询发送+中断发送相关推荐
- STM32串口发送中断
SECTION 2 先说TC.即Transmission Complete.发送一个字节后才进入中断,这里称为"发送后中断".和原来8051的TI方式一样,都是发送后才进中断,需要 ...
- 【串口发送中断】基于赛元单片机使用三合一串口的UART功能
文章目录 前言 中断的方式发送数据 代码示例 准备工作 宏定义及全局变量 初始化 中断服务函数 ==发送逻辑函数== 启动发送函数 总结 前言 关于赛元单片机触摸的那篇文章确实帮助到过一些网友,后来有 ...
- ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收
串口发送部分代码: //通过信号量的方法发送数据 void usart1SendData(CPU_INT08U ch) {OS_ERR err;CPU_INT08U isTheFirstCh;OSSe ...
- 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭
实验目的: 实现芯片串口收发数据,按键中断串口发送数据:按下按键,向串口发送数据,并通过虚拟终端显示出来: 串口接收数据中断来控制LED亮/灭:通过串口助手向MCU发送数据,"A" ...
- 基于STM32F103RCT6实现串口中断发送,使用环形队列
文章目录 一.开发环境 二.串口中断发送原理 三.实验现象 四.完整源码 五.后记 一.开发环境 /************************************************** ...
- 【HAL库】STM32F407ZGT6实现串口中断发送和接收
** [HAL库]STM32F407ZGT6实现串口中断发送和接收 (保姆级教写代码1) ** 前言 根据近期所做的项目,想给大家分享一些有关STM32的各类通信方式的代码教程,都是基于STM32HA ...
- STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化
STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化 基于STM32H743VI 使用STM32CUBEMX两年了,始终觉得这个工具非常的方便,但因为不是经常使用,导致有些 ...
- STM32 USART串口DMA 接收和发送的源码详解!
硬件平台:STM32F103ZET6: 开发环境:KEIL 4: 先说说应用通讯模式,串口终端的工作方式和迪文屏差不多,终端被动接受MCU发的指令,终端会偶尔主动发送一些数据给MCU(像迪文屏的触摸信 ...
- 8051单片机的中断发送
最近使用c8051做开发,串口程序移入工程时,整个程序竟然不跑了,加断点,调试,发现在串口查询发送出了问题,程序在查询发送完毕的时候,竟然死在这,就是while(TI0==0)这地方,用其它型号单片机 ...
- 关于串口通讯查询与中断两种方式
串口通讯有查询与中断两种方式 2011-09-13 13:31 我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下: ...
最新文章
- HTTP头信息中的参数Etag
- python从网上获取数据失败怎么解决_求助:scrapy爬取数据失败,反复调试都不成功...
- 网站快照更新不及时有什么好的解决办法吗?
- 老虎Sitemap生成器 0.2
- 电脑技巧:如何解决99%的电脑防弹窗广告?
- 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。...
- DoYourData AppUninser Mac版(Mac应用卸载工具)
- 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng
- 以前做过一个光标代码的梦,貌似也是个预言梦
- 信源编码与信道编码区别(十一),Android面试题集2021版
- C语言:文件的读写操作
- CIKM 2020 | FANG:利用社会语境及其图表示进行假新闻检测
- python unpack java,Java中的python struct.unpack - java
- 离DApp的爆发还差什么?|链捕手
- RedHat7.8安装Microsoft Edge浏览器
- 在线JS运行 JavaScript IDE
- mysql数据库常见错误及解决方法
- 电子元器件分销业ERP系统供应链解决方案
- WordPress简约响应式导航主题VIK
- 基于MCGS与PLC的四路抢答器
热门文章
- 微软更新Win10工具Media Creation Tool
- Ognl表达式的一些用法
- 水经注地图下载器下载谷歌地图
- 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
- android SDK安装以及环境变量配置(windows)
- JAVA学习笔记(七)细胞自动机(带注释)
- 微信小程序生成二维码方法接口集合
- 数据处理(二):wgs84坐标的UTM投影
- 【题解】PTA-Python题库 浙大版《Python 程序设计》题目集题解索引
- 我们开发中常用的常用浏览器常用插件,比如FeHelper,React Developer Tools, Vue Devtools,沙拉查词,Infinity,OneTab,AdGuard等