CubeMX配置:FreeRTOS及串口配置

2023-05-16

本文通过CubeMX配置F103RCT6的FreeRTOS和串口。

文章目录

  • 1 引入
  • 2 配置过程
    • 2.1 配置时钟过程
    • 2.2 配置FreeRTOS过程
    • 2.3 配置串口过程
  • 3 生成工程代码
  • 4 测试串口
  • 5 总结

1 引入

拿到一个STM32控制器,在啥也没有的情况下从零开始写软件,博主习惯于先配置FreeRTOS操作系统和串口打印。本文就以博主在网上买的小车控制板为例,对其进行最基本的时钟及串口打印配置,并且写一些代码测试一下串口。

2 配置过程

2.1 配置时钟过程

1)首先,新建一个工程,选择MCU型号;
在这里插入图片描述
2)在弹出的型号面板中选择自己购买的开发板上的主芯片型号,这里博主是F103RCT6;
在这里插入图片描述
3)在SYS中配置Sys Debug方式为Serial wire,Timebase Source配置为Tim1;
在这里插入图片描述
4)开发板上的PD0和PD1接了8MHz的晶振,所以选择Crystal/Ceramic Resonator,即使用外部晶振作为HSE的时钟源。
在这里插入图片描述
在这里插入图片描述
5)时钟树配置如下图;
在这里插入图片描述
后续的外设会参考到这里的总线时钟。

2.2 配置FreeRTOS过程

1)在Middleware中选择FreeRTOS,
在这里插入图片描述
2)新建一个SerialTask任务,用于执行串口相关代码;
在这里插入图片描述
3)在Config Parameter中使能软件定时器;
在这里插入图片描述
接着新建一个20ms的软件定时器,设置好回调函数名称和周期调度。
在这里插入图片描述

2.3 配置串口过程

将串口配置为如下所示;
在这里插入图片描述

3 生成工程代码

1)配置生成代码的IDE为STM32CubeIDE;

在这里插入图片描述
2)生成代码配置;
在这里插入图片描述
这里博主勾选了只拷贝必要的库文件,以及生成独立的.c/.h文件,看个人习惯。

4 测试串口

1)点击右上角的Generate Code,并Open Projectp;参考网上其他博客,在uart.c中加上重定向函数,这样就可以用printf函数打印数据;

/* USER CODE BEGIN 1 */

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

PUTCHAR_PROTOTYPE
{
 HAL_UART_Transmit(&huart4,(uint8_t*)&ch, 1, 0xFFFF);
 return ch;
 }

/* USER CODE END 1 */

注意,该函数加在哪里都可以,并且如果是手写代码,最好加在 USER CODE BEGIN 1 这种注释之间,这样的话下次用CubeMX生成代码就不会被覆盖掉。

2)在MX_FREERTOS_Init函数中启动软件定时器

  /* USER CODE BEGIN RTOS_TIMERS */
  /* start timers, add new ones, ... */
	osTimerStart(Timer20msHandle, 20);
  /* USER CODE END RTOS_TIMERS */

3)在StartSerialTask函数中用串口发送,并进行2000ms延时;

/* USER CODE BEGIN Header_StartSerialTask */
/**
* @brief Function implementing the SerialTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartSerialTask */
void StartSerialTask(void const * argument)
{
  /* USER CODE BEGIN StartSerialTask */
  /* Infinite loop */
  for(;;)
  {
	printf("int:%d\r\n",100U);
    printf("float:%f\r\n",22.3F);
    osDelay(2000);
  }
  /* USER CODE END StartSerialTask */
}

4)在工程配置中勾选下面两项,激活浮点数的打印功能;

在这里插入图片描述

6)编译软件,刷到开发板中,通过串口调试助手就可以看到打印的数据;
在这里插入图片描述

5 总结

本文记录了CubeMX配置FreeRTOS及串口打印的过程,这是玩转开发板的第一步。

>>返回个人博客总目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CubeMX配置:FreeRTOS及串口配置 的相关文章

  • vue-admin/vue-element-admin 自动生成表单,数据提交,组件传值

    父组件 xff08 基于element UI xff09 xff1a 弹出层 lt dialogBar dialogData 61 34 dialogData 34 v if 61 34 showUpdateDiaLog 34 64 han
  • 美团2018春招笔试题

    任意一个正整数可以用字符 0 9 表示出来 但是当这些字符每种字符数量有限时 xff0c 可能有些正整数表示不出来 比如有两个 1 xff0c 一个 2 xff0c 能表示出11 12 112等等 xff0c 但是无法表示出10 122 2
  • 如何使用火狐浏览器的Poster插件进行post请求

    不诗意的女程序猿不是好厨师 转载请注明出处 xff1a From 李诗雨 http blog csdn net cjm2484836553 article details 72453907 善假于物者 xff0c 正途也 学会利用身边的工具
  • Grpc常见面试题

    1 grpc四种通信模式 xff1f 答 xff1a 1 xff09 一元 RPC xff1a 客户端发起一个请求 xff0c 服务端给出一个响应 xff0c 然后请求结束 xff1b 2 xff09 服务端流 RPC xff1a 客户端发
  • 读书笔记:无人机控制(五)

    目录 垂直起降飞行器的数学建模与非线性控制RUAV动力学模型刚体动力学 Rigid Body Dynamics 空气动力学力与力矩 Aerodynamics Forces and Torques 非线性分层飞行控制器的设计与稳定性飞行控制器
  • jetson-xavier-nx刷机趟坑记录

    1 sdkmanager刷写系统 sdkmanager启动失败 使用sdkmanager刷机时可能会遇到sdkmanager启动失败的情况 xff0c 界面出现一个 OPT 错误 xff0c 显示 No SDKs are available
  • 虚拟串口软件和串口调试助手的简单使用

    为解决计算机的物理串口个数的限制 xff0c 在进行串口调试实验时 xff0c 应尽可能采用虚拟串口软件 VSPD xff08 Virtual Serial Ports Driver xff09 虚拟串口软件是由Eltima软件公司设计的虚
  • Multi-Object Trackers

    Introduction to Multiple Target Tracking 简单介绍了多目标物跟踪的流程 方法 1 single target tracking STT 单目标跟踪 xff0c 不需要association和assig
  • MATLAB:Introduction to Assignment Methods in Tracking Systems 目标匹配方法

    引言 1 MATLAB R2019b 2 MATLAB中Introduction to Assignment Methods in Tracking Systems介绍了目标匹配的方法 包括背景介绍 xff0c 2 D匹配介绍 xff08
  • Introduction to Using the Global Nearest Neighbor Tracker

    MATLAB R2019b global nearest neighbor GNN tracker xff1a 最近邻 1 目标 Choose the assignment algorithm to associate detections
  • C语言qsort的三种使用

    1 结构体的qsort include lt stdlib h gt include lt stdio h gt struct block int att1 int att2 int cmp const void a const void
  • 编译和使用basalt时出现的报错

    把总结写在前面 请使用GCC9或以上版本编译basalt如果apt安装的fmt版本太低 xff0c 请编译安装高一点版本的fmt使用CLion编译请在配置好运行时的LD LIBRARY PATH 报错一 xff1a github basal
  • Http Digest 认证

    其认证的基本框架为挑战认证的结构 xff0c 如下图所示 xff1a xfeff xfeff 1 客户端希望取到服务器上的某个资源 xff0c 向服务器发送Get请求 2 服务器收到客户端的请求后 xff0c 发现这个资源需要认证信息 xf
  • Error:代理服务器拒绝链接

    不诗意的女程序猿不是好厨师 转载请注明出处 xff1a From李诗雨 http blog csdn net cjm2484836553 article details 72593227 最近在用火狐浏览器时出现 xff1a 代理服务器拒绝
  • ROS入门教程2-通信架构-Topic和Msg

    本教程系列全程参考ROS机器人操作系统入门 计算图级 ROS为大体量结构而生 xff0c 主要目标是各个模块的管理和通信 1 master xff08 节点管理器 xff09 每个node启动时都要向master注册 xff0c 管理nod
  • Odroid U3简单实用

    材料 xff1a odroid u3含eMMC卡 xff08 装有系统 xff09 及uart usb套件 xff0c 网线 xff08 我是用的是有线的情况 xff0c 无线的还没有看 xff09 xff0c 供电线 系统 xff1a 电
  • 程序员的硬件设备

    程序员的硬件设备 程序员的工作台 很多人从网上 或者公司里 xff0c 看到程序员开发的工作台是这样的 其实这是个误区 xff0c 不同的人习惯不一样 xff0c 对于程序员来说 xff0c 一台性能好点的电脑就做够了 市场上有很多驻场外包
  • Git:解决报错:fatal: The remote end hung up unexpectedly

    问题描述 xff1a Git在推送项目时报错 xff1a fatal The remote end hung up unexpectedly 问题原因 xff1a 推送的文件太大 解决方法 xff1a 1 修改设置git config文件的
  • 人工智能-概述:数据分析---->人工智能【机器学习----->深度学习】

    一 人工智能 简介 人工智能在现实生活中的应用人工智能发展必备三要素人工智能和机器学习 深度学习三者之间的关系BI 数据分析 数据挖掘 xff1a Excel xff1b 超级Excel SPSS SAS xff09 xff1b Matla
  • 深度学习-激活函数:饱和激活函数【Sigmoid、tanh】、非饱和激活函数【ReLU、Leaky ReLU、RReLU、PReLU、ELU、Maxout】

    深度学习 激活函数 xff1a 饱和激活函数 Sigmoid tanh 非饱和激活函数 ReLU Leaky ReLU RReLU PReLU ELU Maxout 一 激活函数的定义 xff1a 二 激活函数的用途1 无激活函数的神经网络

随机推荐