当前位置: 首页 > news >正文

搭建STM32F407的Freertos系统(基于STM32CubeMX)

       本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。

        本次demo目标立下:

        1. 搭建或移植FreeRTOS到STM32上,毕竟对于长期在Linux环境开发(虽然也号称嵌入式),什么中断、拉高拉低,一直来没有搞的明明白白。有个RTOS会方便很多

         2. printf重定向到串口1,可以实现打印输出

         3. 有个任务:定期拉高LED,然后反转,比较方便的看看程序运行情况。(在没有屏幕的设备里,这个就好比串口输出,很常用)

本次采用板子是 晋中的开发板,搜索了下(网上关于这块介绍比较少,大部分是什么原子的),但对比了两个品牌开发板的原理图,大部分是一致的,因此很多情况下都是可以参考的,甚至复用吧!!

STM32CubeMX 端配置

打开STM32CubeMX软件,首先要选择芯片,晋中开发的是 STM32F407ZGT6

1. 配置RCC

CPU心脏起搏器选择,大概意思选择外部的方式:HSE、LSE也是

这个地方,如果要讲究,就得看开发板原理图,是不是这样设计的

2. 第二步,我觉得应该配置时钟:

选择 这个tab

然后配置参考如下图(实际跟上一步有关系,都是HSE、LSE配置),芯片168MHz是正常的频率,目前小白的水平,先不管功耗的问题,就是正常频率去运行。(注意那几个选择)

3. 配置点灯LED对应GPIO

点灯是Output,看了下原理图,开发板用与点灯是PF9、PF10

在这个图上面,找到PF9:

然后,点击对应的"引脚"就可以设置属性:主要是in 还是out,如果是右键的话,可以设置名称之类的。

GPIO还有个点,也要设置的。比如pull-up 还是 pull - down,要看原理图(跟电源连接的,就是up)

到此为止,两个点灯的GPIO已经配置好了。

4. 配置SYS

系统一些调试信息,TIM1也很重要

5. 配置串口

板子的串口1是接在USB转串口芯片上的,方便电脑侧获得输出结果,因此,打算用串口1作为Printf输出接口。如下图,

大概意思:采用同步方式,然后勾选中断。如果要DMA方式,还要DMA Settings进行配置,不过我没有成功(配置是可以配置,但不知道哪里错了,运行不起来)

当然波特率这些也是可以设置的,在Parameter Settings里面就可以根据实际需要设置。

6. 添加Freertos系统

到此为止,所有配置都可以了。

7. 配置project信息

选择Project Manager - Project

然后在 Code Generator

最后一步,就是生成代码,生成好之后可跳转到Keil 这边。

8. 在Keil码代码

9. 烧写到板子

相关文章:

搭建STM32F407的Freertos系统(基于STM32CubeMX)

本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。 本次…...

vite 配置自动补全文件的后缀名

vite 不建议自动补全,文件的后缀名的 const Home ()>import("/views/Home.vue");文件是必须要加上 .vue 的后缀名的 如果 想要像 webpack 一样的不用写, 可以在vite.config.js中配置如下就可以了...

基于Spring Boot的人才公寓管理系统设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的人才公寓管理系统设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…...

Python 编写函数

文章目录 条件语句循环语句自定义函数函数参数的传递类型函数的参数传入方法 lambda, map, filter, reduce 函数try-except 语句调试一些常用的内置函数 条件语句 编写程序时,经常用到一些条件或判断,需要用到 if 语句,它的字面意思是&#…...

C# Solidworks二次开发:创建距离配合以及移动组件API详解

今天要讲的文章是关于如何创建距离配合和移动组件的API详解。 (1)创建配合API,CreateMate() 这个API的解释是根据指定的特性数据对象来创建配合,也就可以理解为输入什么样的特征对象就可以创建出什么配合,这个API的输…...

Excel:通过Lookup函数提取指定文本关键词

函数公式:LOOKUP(9^9,FIND($G 2 : 2: 2:G 6 , C 2 ) , 6,C2), 6,C2),G 2 : 2: 2:G$6) 公式解释: lookup第一参数为9^9:代表的是一个极大值的数据,查询位置里面最接近这一个值的数据;lookup第二参数用find函数代替&am…...

sql:SQL优化知识点记录(六)

(1)索引优化1 查看一下有没有建立索引: 用到索引中的一个:type中的ref决定访问性能 用到索引中的两个:通过key_len的长度可以看出来,比第一个大一点。或者通过ref:中用到了两个常量const 用到了…...

C#搭建WebSocket服务实现通讯

在学习使用websocket之前我们先了解一下websocket: WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。与HTTP协议不同,它允许服务器主动向客户端发送数据,而不需要客户端明确地请求。这使得WebSocket非常适合需要实时或持续通信的应…...

eclipse/STS(Spring Tool Suite)安装CDT环境(C/C++)

在线安装 help -> eclipse marketplace 可以发现,我所使用eclipse给我推荐安装的CDT是10.5版本 离线安装 下载离线安装包 下载地址:https://github.com/eclipse-cdt/cdt/blob/main/Downloads.md 可以看到利息安装包主要有如下四大类,…...

Python爬虫抓取经过JS加密的API数据的实现步骤

随着互联网的快速发展,越来越多的网站和应用程序提供了API接口,方便开发者获取数据。然而,为了保护数据的安全性和防止漏洞,一些API接口采用了JS加密技术这种加密技术使得数据在传输过程中更加安全,但也给爬虫开发带来…...

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误:缺少服务名称报错:9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…...

Win7设备和打印机里空白,0个对象,但是可以打印的处理办法

呉師傅 你是不是遇到过Win7系统打开设备和打印机的时候显示是空白的,0个设备的情况?要怎么操作才能解决这一问题呢,下面就分享一下如何处理这个问题的小方法大家可以尝试一下。 问题如下: 解决方法: 1、点击桌面左下…...

Python基础学习第六天:Python 数据类型

内置数据类型 在编程中,数据类型是一个重要的概念。 变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。 在这些类别中,Python 默认拥有以下内置数据类型: 获取数据类型 您可以使用 type() 函数获取任何对象的数据…...

C++信息学奥赛1184:明明的随机数

#include <bits/stdc.h> using namespace std; int main() {int n; // 数组长度cin >> n; // 输入数组长度int arr[n]; // 定义整数数组&#xff0c;用于存储输入的整数// 输入数组元素for (int i 0; i < n; i){cin >> arr[i];}int e 0; // 计数器&…...

NoSQL技术——Redis

简单介绍 Redis是当下最流行的NoSQL数据库。在Redis中&#xff0c;数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中&#xff0c;值除了是常见的字符串&#xff0c;也可以是类似于Json对象的形式&#xff0c;或者是List&#xff0c;Map等数组格式&#xff0c;…...

【探索SpringCloud】服务发现-Nacos服务端数据结构和模型

前言 上一文中&#xff0c;我们从官方的图示了解到Nacos的服务数据结构。但我关心的是&#xff0c;Nacos2.x不是重构了吗&#xff1f;怎么还是这种数据结构&#xff1f;我推测&#xff0c;必然是为了对Nacos1.x的兼容&#xff0c;实际存储应该不是这样的。于是&#xff0c;沿着…...

基于简单的信息变换实现自然语言模型

题目:基于简单的信息变换实现自然语言模型 摘要:在自然语言处理中,自然语言模型是至关重要的。本论文提出了一种基于简单的信息变换实现自然语言模型的方法。该方法将输入信息进行一系列的信息变换,如分割、属性、等效替换、增加删除等变换,与原始信息进行比较,得知信息是…...

低配版消息队列,redis——Stream

消息队列实现&#xff1a;群发效果 redis原有的消息队列数据不会持久化&#xff0c;所以它加了一个Stream数据结构。 添加数据&#xff1a;XADD s1(组名) *(*为自动生成) key val 取出数据&#xff1a; XREAD COUNT 1(取出个数) BLOCK 1(队列为空时等待时间0为一直等) STREA…...

【OpenCV入门】第五部分——图像运算

文章结构 掩模图像的加法运算图像的位运算按位与运算按位或运算按位取反运算按位异或运算图像位运算的运用 合并图像加权和覆盖 掩模 当计算机处理图像时&#xff0c;有些内容需要处理&#xff0c;有些内容不需要处理。能够覆盖原始图像&#xff0c;仅暴露原始图像“感兴趣区域…...

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录 前言参考目录版本说明Windows 部署 seata-server1&#xff1a;下载压缩包2&#xff1a;文件存储模式3&#xff1a;db 存储模式3.1&#xff1a;建表3.2&#xff1a;修改配置文件3.3&#xff1a;启动脚本4&#xff1a;源码部署 Docker 部署 seata-server &#xff08;基…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...