STM32之USART串口通信

发布者:谁与争锋1最新更新时间:2017-09-21 来源: eefocus关键字:stm32  USART  串口通信 手机看文章 扫描二维码
随时随地手机看文章

一、简单demo 
通过232串口,与上位机进行通信。首先保证单片机232串口与电脑的串口接口相连,当然电脑是USB接口,其实USB接口的实质也是串口。我们实现上位机发送一个16进制的数据,单片机接受到数据后显示,并且2倍发送给上位机。 
1、usart_init();串口初始化

void usart_init()
{
   GPIO_InitTypeDef GPIO_InitStructure;
   USART_InitTypeDef USART_InitStructrue;
   NVIC_InitTypeDef NVIC_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);//打开GPIOA和USART时钟
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //功能复用 IO 时钟
   //GPIO初始化配置
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//TX PA9
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
   GPIO_Init(GPIOA,&GPIO_InitStructrue);
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//RX PA10
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
   GPIO_Init(GPIOA,&GPIO_InitStructure);   //USART初始化配置
   USART_InitStructure.USART_BaudRate = 9600; //波特率设置9600
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.Parity = USART_Parity_No;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  //串口模式为 发送和接收模式
   USART_Init(USART1,&USART_InitStructure);
   USART_Cmd(USART1,ENABLE);
   USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //打开发送中断,缓冲器有数据中断产生
   USART_ClearFlag(USART1,USART_FLAG_TC);//清理发送完成标志位   
   //NVIC 中断配置
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //优先级分组1,有1位抢占式优先级,3位从优先级
   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//打开USART1的全局中断
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级为 0
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级为 0
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
   NVIC_Init(&NVIC_InitStructure);
}12345678910111213141516171819202122232425262728293031323334

2、USART1_IRQHandler()串口中断函数

void USART1_IRQHandler(void)
{   static u8 d;
   USART_ClearFlag(USART1,USART_FLAG_TC);//当接收缓冲器非空时,接收数据  if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){
   d = ReceiveData(USART1);
   d = 2*d;
   USART_Send(USART1,d);//检测发送完成标志位是否置1   while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) != SET);}
}12345678910111213

3、main()主函数

int main()
{
   usart_init(); //串口1初始化
   while(1);   return 0;
}123456

这 个主函数的效果是,设置串口波特率为 9600,在串口助手设置 HEX 发送和显 
示,发送 16 进制数后加 1 进行显示。 
4、串口调试助手设置 
这里写图片描述


关键字:stm32  USART  串口通信 引用地址:STM32之USART串口通信

上一篇:STM32f10x系列工程建立演示
下一篇:STM32之USART 232串口通信<一>

推荐阅读最新更新时间:2024-03-16 15:37

STM32】2-STM32中断系统(NVIC)
一、中断介绍 1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视时突然门铃响,那么门铃响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。 STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。(参考《STM32F10x中文参考手册》-9 中断和事件章节) 1.2 NVI
[单片机]
【<font color='red'>STM32</font>】2-STM32中断系统(NVIC)
再造STM32---第一部分:如何正规的安装KEIL5?
获取本文所有安装包和注册机方式: 1、CSDN下载: https://download.csdn.net/download/qq_38351824/10943718 2、可以关注点赞并在下方评论,我给你邮箱发过去。 3、关注微信公众号下载: ① 关注微信公众号:Tech云 ② 一、温馨提示: 1、 安装路径不能带中文,必须是英文路径 2、 安装目录不能跟 51 的 KEIL 或者 KEIL4 冲突,三者目录必须分开 3、 KEIL5 的安装比起 KEIL4 多了一个步骤,必须添加 MCU 库,不然没法使用。 4、 如果使用的时候出现莫名其妙的错误,先百度查找解决方法,莫乱阵脚。 二、获取 KEIL5
[单片机]
再造STM32---第一部分:如何正规的安装KEIL5?
STM32入门学习笔记之外置FLASH读写实验
15.1 FLASH Flash,全名叫做Flash EEPROM Memory,即平时所说的“闪存”,它结合了ROM和RAM的长处,不仅可以反复擦除,还可以快速读取数据,STM32运行的程序其实就是存放在Flash当中,但是由于STM32的Flash一般1M左右,只能存储程序大小的数据,所以往往需要外扩Flash来存储数据,比如LCD界面当中的汉字字库,以及文件系统中读取的文件内容。 但是一般Flash的擦除次数有限制,STM32F1系列最新的文档指出,片内的FLASH擦写次数大约在1W次左右,所以一般Flash用于擦除次数不多,但是数据量很大的场合。 这个Flash读写实验我们用到的芯片是W25Q128,这是一款采用S
[单片机]
<font color='red'>STM32</font>入门学习笔记之外置FLASH读写实验
STM32 CubeMX按键中断
一、GPIO 8种工作模式 输入模式: 1. GPIO_Mode_AIN 模拟输入 2. GPIO_Mode_IN_FLOATING 浮空输入 3. GPIO_Mode_IPD 下拉输入 4. GPIO_Mode_IPU 上拉输入 输出模式: 5. GPIO_Mode_Out_OD 开漏输出 6. GPIO_Mode_Out_PP 推挽输出 7. GPIO_Mode_AF_OD 复用开漏输出 8. GPIO_Mode_AF_PP 复用推挽输出 施密特触发器:当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变,只有当输入电压发生足够的变化
[单片机]
<font color='red'>STM32</font> CubeMX按键中断
Crypto算法库使用技巧之基于STM32 AES GCM应用提示
引言 X-CUBE-CRYPTOLIB 是基于 STM32 的 Crypto 算法库,支持对称密钥、非对称密钥、哈希等多种算法。正确地使用 Cyrptolib 算法库,可以在应用程序中实现数据加密、设备身份认证、加密通信等多种应用层所需的安全功能。相反,若不能正确地使用算法库往往会带来加解密数据错误等系列问题。 关于 STM32 Crypto 算法库应用中的常见的问题之一就是应用程序没有使能 MCU 的CRC 模块,尽管输出的数据和期望值不同,但加解密函数的调用并未返回异常。本文在此描述另外一种没有正确使用算法库的情况。 问题描述 客户应用项目中需要在固件更新过程中对固件进行加密并验证,根据推荐采用了 AES- GCM 算
[单片机]
RyanMqtt移植指南
测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、网络硬件使用ec800m移植at_socket使用sal框架。 1、移植介绍 RyanMqtt 库希望应用程序为以下接口提供实现: system 接口 RyanMqtt 需要 RTOS 支持,必须实现如下接口才可以保证 mqtt 客户端的正常运行 network 接口 RyanMqtt 依赖于底层传输接口 API,必须实现该接口 API 才能在网络上发送和接收数据包 MQTT 协议要求基础传输层能够提供有序的、可靠的、双向传输(从客户端到服务端 和从服务端到客户端)的字节流 time 接口
[单片机]
RyanMqtt移植指南
STM32 IIC难点易错点
先来点题外话~网上说STM32F103的IIC有瑕疵!就当是有些短板吧,个人觉得,用起来肯定没问题,只是不好用。因为ST公司考虑到专利问题,所以没按飞利浦的标准来。导致STM32的IIC使用起来非常繁杂。下面就讲讲用STM32 IO口模拟IIC的注意问题: IIC总线时序: 进入正题→_→博主就因为没理解好应答,吃了亏。讲一讲IIC的几个重要状态: 1、空闲状态:当IIC总线空闲时,SDA和SCL两条线均为高电平,由于连接到总线上的器件必须是漏级和集电极开路(至于威为什么请读者自己搜索),只要有一个器件任意时刻输出低电平,都将使总线上的信号变低,即各器件的SDA和SCL是线与的关系。由于各器件输出端是漏级开路,故必须通
[单片机]
<font color='red'>STM32</font> IIC难点易错点
STM32 usb_mem.c和usb_sil.c文件的分析
这两个c文件都还算是很简单的,先讲讲usb_mem.c这个文件。从文件名就能知道跟内存有关,这个文件主要定义了两个函数,一个读双缓冲区PMA的数据PMAToUserBufferCopy(),另一个是写数据到双缓冲区PMA,UserToPMABufferCopy。如果,当你的usb设备接收到了数据,当然数据存放在PMA中了,我们要读出数据就要用到PMAToUserBufferCopy()函数了,如果我们想要发送数据给usb主机,就要将你要发送的数据拷贝到PMA缓冲区中了,这样才能发送出去,原理跟串口类似。 /*************************************************************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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