STM8L USART串口使用
STM8L上有多个串口,最多可达5个,分别为USART1~USART5,但依据型号不同,搭载数量并不相同。
以STM8L052R8为例,其只具有USART1~USART3。
因为STM8系列功能众多,很多Pin都是复用的,因此使用前必须检查STML的参考手册。
通过手册可知,以USART1为例,RX/TX可以使用以下的管脚,默认是PC2/PC3,
如果要变更,需要修改SYSCFG remap control register 1 (SYSCFG_RMPCR1)的5:4位进行切换。

Bits 5:4 USART1TR_REMAP[1:0]: USART1_TX and USART1_RX remapping
00: USART1_TX on PC3 and USART1_RX on PC2
01: USART1_TX on PA2 and USART1_RX on PA3
10: USART1_TX on PC5 and USART1_RX on PC6
11: Reserved

初始化:

// USART initUSART_DeInit(USART1);  // PC2-RX PC3-TX 端口上拉
GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_2 | GPIO_Pin_3, ENABLE);// 初始化参数
USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, USART_Mode_Rx | USART_Mode_Tx);  // 允许读和写// 开中断
// 一般需要写时再开写中断,否则写中断会非常频繁以至于始终在执行中断
// 读中断看具体业务
//USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    //USART_ITConfig(USART1, USART_IT_TC, ENABLE);/* Enable USART 使能 */USART_Cmd(USART1, ENABLE);

关闭串口

GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_2 | GPIO_Pin_3, DISABLE);USART_Cmd(USART1, DISABLE );USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);USART_ITConfig(USART1, USART_IT_TC, DISABLE);

读写处理(异步)

void uart_begin_read(uint8_t len)
{
// prepare send data
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);

 // 初始化读缓冲
read_idx = 0;read_len = len;// 开始读(开读中断)
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

}

void uart_begin_write(uint8_t* data, uint8_t len)
{
// prepare send data
USART_ITConfig(USART1, USART_IT_TC, DISABLE);

 // 初始化写缓冲(复制待写数据等)
memcpy(writ_buffer, data, len);writ_idx = 0;writ_len = len;// 开始写(开写中断)
USART_ITConfig(USART1, USART_IT_TC, ENABLE);return;

}

中断处理

// 写中断处理
INTERRUPT_HANDLER(USART1_TX_TIM5_UPD_OVF_TRG_BRK_IRQHandler, 27)
{
// 发送1字节
USART_SendData8(USART1, writ_buffer[writ_idx++]);
USART_ClearITPendingBit(USART1, USART_IT_TC);

 // 等待缓冲数据全部写出后,关写中断
if( writ_idx == writ_len ) {USART_ITConfig(USART1, USART_IT_TC, DISABLE);// 你的处理
}

}

// 读中断处理
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler, 28)
{
uint8_t temp = 0;

 // 读1字节,存入读缓区
temp = USART_ReceiveData8(USART1);read_buffer[read_idx++] = temp;// 等待全部读完后(如果有设定读长度的话)关读中断
// 这里根据具体业务,可以不关中断一直接受数据
if( read_idx == read_len ) {USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);}

}

上面示例是异步读写,加一个状态等待的循环判断,可改为同步读写。

STM8L USART串口使用相关推荐

  1. STM8L USART串口使用

    USART串口使用 STM8L上有多个串口,最多可达5个,分别为USART1~USART5,但依据型号不同,搭载数量并不相同. 以STM8L052R8为例,其只具有USART1~USART3. 因为S ...

  2. SM32的USART串口设置

    SM32的USART串口设置 对于复用功能的 IO,我们首先要使能 GPIO 时钟,然后使能复用功能时钟,同时要把 GPIO 模式设置为复用功能对应的模式,串口参数的初始化设置,包括波特率,停止位等等 ...

  3. vc++ cserialport 打开多个串口_STM32之USART串口

    1. 简介 串口全称:Universal synchronous asynchronous receiver transmitter,中文名称:通用同步异步串行接收发送器.串口可用于接收和发送数据,可 ...

  4. 串口输出换行_stm32初学者必会操作----usart串口调试工具

    stm32初学者必会操作----usart串口调试工具 今天笔者介绍stm32初学者必会的工具 usart的串口设备. usart很重要,可以传输数据,可以检查代码的错误位置,查看输出数据. 下图就是 ...

  5. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)

    USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...

  6. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  7. 弄清USART串口的使能位(UE、TCIE、RXNEIE)和标志位(TC、RXNE)

    下面通过485半双工的通信过程,记录USART串口的几个使能位.标志位.   说明:USART_IT_TC 和 USART_IT_RXNE是一个常量,并不代表(TC.RXNE)这两位. #define ...

  8. 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”

    目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 ​ 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...

  9. USART串口协议和USART串口外设(USART串口发送串口发送和接收)

    1.通信接口 A.基本概念 • 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发  异步:需要双方约定一个频率 B.数据通信方 ...

  10. 合泰HT32F52352 USART串口与电脑通信控制LED

    大怨种经过3天的学习终于把USART串口与电脑通信控制LED完成了,这过程中遇到了许多问题,参考了许多文章,在这就不把所有参考文章都一一列出了,基本上所有的HT32的学习笔记大家的USART.c的文件 ...

最新文章

  1. 全局拖拽上传文件(类似百度网盘)的实现及踩坑
  2. Django路由与视图
  3. Logminer实战
  4. Nubiers to follow
  5. 关于XIFF开发IM的一些想法
  6. Tableau Desktop 2021中文免费版下载(包含其它历史版本)
  7. ES6阮一峰读书笔记第一章let和const命令
  8. DotSpatial入门
  9. 《自己动手写CPU》第七章 --算术操作指令的实现
  10. android p 小米6,小米6 想升级 Android P,系统软件工程师发话:可适配
  11. leetcode刷题(第739题)——每日温度
  12. .NET 中的 GAC
  13. Indexes and Indexing
  14. Idea 去掉 mapper.xml 文件的黄色、淡绿色警告(Windows、Mac)
  15. 苹果手机免越狱群控无需硬件即插即用高清投屏控制操作
  16. 炫舞行书教学视频java_王羲之行书基本笔画教程 王羲之行书基本笔画讲解视频...
  17. 一步一步用debugserver + lldb代替gdb进行动态调试(整理与补充)
  18. 【电子产品】ThinkPad S5 Intel R Dual Band Wireless-AC 3165 网卡驱动莫名
  19. 超市管理系统的html页面,基于WEB的超市管理系统_站内搜索_Web开发网
  20. 《UnityAPI.Application应用程序》(Unity+SteamVR+云技术+5G+AI+VR云游戏+API+dataPath+OpenURL+LoadLevel+立钻哥哥++OK++)

热门文章

  1. 计算机知识技能大赛主持稿,计算机知识技能大赛.doc
  2. Kettle 数据迁移
  3. CentOS8.4搭建PXE启动Ubuntu-server20.04(UEFI)
  4. 模糊控制(一)模糊控制简介及数学基础
  5. web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业...
  6. 详解电子名片不一样的展示推广功能
  7. 佐罗一键新机数据导出导入文件夹
  8. 基于Easy CHM和VS的帮助文档制作
  9. 电子商业汇票知识问答题
  10. 华为云计算hcip证书有效期_华为云计算HCIP V4.0认证要发布了!