STM32CubeMX系列教程 5.0版本环境开发——2.Uart串行通信功能

1.搭建一个基本工程:

 

具体请参考我的上一篇内容搭建:https://www.cnblogs.com/Engineer-Lai/p/10072673.html

 

2.Uart协议简要: 分为通俗描述和概念性描述

通俗描述:

⭐1. 对于单片机入门的人来说,首先我们要明白 我们唯一可控的对象是IO口,IO有两种状态 0和1.  有两种操作读和写(请务必确认自己明白并可以操控,我们便可继续)

⭐2.在确认第一点后,硬件协议存在的意义是什么:A对象 把N个数据遵照特定的规则传给 B对象.(这里数据的单位是字节,一个字节由8个位组成)

⭐3.接下来就是如何传数据的问题了,我们只有0和1可以表示。所以我们必须制定一套双方都遵循的可行游戏规则。如下:

      准备工作:1.先将A对象的一个IO口和B对象的一个IO用一根线完成物理上的连接;

                     2.设数据由 A对象 发送给 B对象

 

           i. 空闲状态:通信线保持1(高电平)

           ii.起始信号:通信线由发起方(A)控制IO口为0,持续一个双方约定的单位时间

   iii.数据段(由8个数据位组成):将数据(字节)拆分成最小单位 即8个二进制位,如字节0x41 拆分后就是 1 0 0 0   0 0 1 0;每个数据照这个顺序各自持续一个单位时间。

      iv.结束信号:通信线由发起方(A)控制IO口为0,持续一个双方约定的单位时间

 

   总结就是:1.首先双方约定一个单位时间  2.然后按照   起始位,数据位1,数据位2,数据位3,数据位4,数据位5,数据位6,数据位7,数据位8,停止位  执行

 

例子:传输0x41 (1 0 0 0   0 0 1 0).我们这里约定9600波特率(即时间轴一个单位时间是1/9600,即104微妙为一个时间单位)示波器波形如下。

 

 

 概念描述:(都是书本概念了这里参考微雪)

 

在串行通信中,一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束。在进行传输之前,双方一定要使用同一个波特率设置。波特率就是每秒钟传输的数据位数。

 

       常用的两种基本串行通信方式包括同步通信和异步通信。我们通常使用的是异步通信.异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成。

 

 

 

                                                                         

 

PS:在明白原理的情况下建议自己手写一次模拟UART。明白了之后,代码重复的事就由STM32芯片的硬件功能来实现就可以了,你只需要会看逻辑分析仪或者示波器分析数据便可。  所谓硬件功能 就是你把数据填充到寄存器,然后配置好相关参数,他会自动帮你发送出去。

通俗点说,自己手写整个协议代码实现实现就像你自己把一个快件送到到别人那里再回来,而硬件功能则是你把快件给快递员,快递员帮你送过去。  明显 后者会帮你节省大量时间和精力。它是一个硬件组成,并且你也为此付费了.一个芯片串口硬件功能的多和少也影响着它的价格.

 

下面让我们开始配置硬件功能

 

 

 

 

3.工程配置与生成:

 1.启用Uart功能:按照以下五个步骤配置好后,生成代码即可(默认115200,如果需要改波特率则另外在第4步,选择Paramrter Setting,修改波特率即可)

 

 

 

4.功能与使用:

 

 1.发送:

   HAL库的使用说明都在 生成的工程 Drivers/STM32FXXX_Driver文件夹下匹配功能的.C文件中,里面非常详尽的描述了各个功能如何使用。在这里我们可以看到针对串口的3种模式描述,分别是Polling mode 轮询模式 / Interrupt mode 中断模式 / DMA模式。 本次实例种,是写一个用于调试的串口,所以这里根据需求,我们使用是Polling mode下的HAL_UART_Transmit();

 

 

 鼠标拉选整个函数按F12可以直接跳到函数位置具体看到这个的介绍描述。基本就可以看懂如何使用了。

 

 

 

 直接在main.c的while(1)下根据函数要求填入对应参数调用 

 

 

 编译烧写,我们可以在串口接收助手看到这句话不断的被发送出来,发送功能测试至此结束。

 

 

延伸知识点:重定向Printf

Printf一般我们都要使用,重定向一下,然后重写这个函数即可

建立一个专门管理串口的Uart_Controller.C 和 Uart_Controller.H文件

 

⭐在头文件中进行以下定义(直接复制到头文件就好)

 

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  

#ifdef __GNUC__
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

 

⭐以下是重写的函数(直接复制到.C文件就好)

/**==================================================================
@FuncitonName: PUTCHAR_PROTOTYPE(fputc)
@brief : 重定向Print函数
@param : (int) ch
@param : (FILE) *f
@retval : int
@Author : 一碗蛋花
//==================================================================*/

PUTCHAR_PROTOTYPE /* printf */
{
   //===============================================================
   // 发送
   //===============================================================
   HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
   return ch;
}

 

 ?然后就可以在main.C函数中使用printf 辣.

 

 

  2.接收:

 //接收功能的描述待续...........(偷懒中)

 

转载于:https://www.cnblogs.com/Engineer-Lai/p/10263320.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
介绍STM32CubeMX 5.0.0 STM32CubeMX是32位ARM®Cortex®STM32微控制器的图形工具。它是STMCube“计划的一部分,既可以作为独立应用程序使用,也可以作为集成开发环境(IDE)集成的Eclipse插件使用 .STM32CubeMX具有以下主要功能: 轻松的微控制器选择涵盖整个STM32产品组合 从STMicroelectronics板列表中选择电路板。 简单的微控制器配置(引脚,时钟树,外设,中间件)和相应的初始化C代码的生成。 通过将先前保存的配置导入新的MCU项目,可轻松切换到属于同一系列的另一个微控制器。 生成配置报告。 为选择的集成开发环境工具链生成IDE就绪项目。STM32CubeMX项目包括生成的初始化C代码,STM32 HAL驱动程序,用户配置所需的中间件堆栈以及在所选IDE中打开和构建项目所需的所有相关文件。 用户定义的应用程序序列的功耗计算。 自我更新允许用户使STM32CubeMX保持最新状态。 下载和更新用户应用程序开发所需的STM32Cube嵌入式软件”(有关STM32Cube嵌入式软件产品的详细信息,请参阅附录E:STM32Cube嵌入式软件包)。 安装并运行STM32CubeMX 5.0.0 支持的操作系统和体系结构 Windows®7:32位(x86),64位(x64) Windows®8:32位(x86),64位(x64) Windows®10:32位(x86),64位(x64) Linux®:32位(x86)和64位(x64)(在RedHat,Ubuntu和Fedora上测试) 由于STM32CubeMX是32位应用程序,因此某些版本的Linux 64位 发行版需要安装32位兼容软件包,如作为ia32-libs。 MacOS:64位(x64)(在OS X Yosemite上测试) 软件要求 在Windows和Linux上:Java运行时环境(最低版本1.7.0_45) 在MacOS上:Java开发工具包(最低版本1.7.0_45) 安装STM32CubeMX 要安装STM32CubeMX,请执行以下步骤: 将最新的STM32CubeMX安装包的全部内容从http://www.st.com/stm32cubemx解压缩(解压缩)到同一目录中 在Windows上 确保您拥有管理员权限 双击SetupSTM32CubeMX-5.0.0.exe文件 在Linux上 确保您具有目标安装目录的访问权限,您可以以root(或sudo)身份运行安装,以在共享目录上安装STM32CubeMX 在SetupSTM32CubeMX-5.0.0.linux文件上双击(或从控制台窗口启动) 在MacOS上 确保您具有目标安装目录的访问权限,您可以以root(或sudo)身份运行安装,以在共享目录上安装STM32CubeMX 在SetupSTM32CubeMX-5.0.0应用程序上双击(或从控制台窗口启动) 安装后,您可以安全地从磁盘中删除zip的内容。 有关系统要求或其他可能安装的更多详细信息,请参阅STM32CubeMX用户手册。 运行STM32CubeMX 在Windows上 从Program Files> ST Microelectronics> STM32CubeMX中选择STM32CubeMX。 或者双击桌面上的STM32CubeMX图标。 在Linux上 从STM32CubeMX安装目录启动STM32CubeMX可执行文件 在MacOS上 从启动板启动STM32CubeMX应用程序 卸载STM32CubeMX 要卸载STM32CubeMX,请执行以下步骤: 在Windows上 打开Windows控制面板。 选择“程序和功能”以显示计算机上安装的程序列表。 右键单击STM32CubeMX并选择卸载功能。 在Linux上 使用文件资源管理器,进入STM32CubeMX安装的卸载程序目录,然后双击startuninstall桌面快捷方式 或使用java -jar /Uninstaller/uninstaller.jar手动启动卸载 在MacOS上 使用文件资源管理器,进入STM32CubeMX安装的Uninstaller目录,然后双击uninstaller.jar 或直接将STM32CubeMX应用程序移动到回收站中

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值