IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 平衡车+速度/位置pid+野火上位机移植+Freertos+cubemx(一) -> 正文阅读

[嵌入式]平衡车+速度/位置pid+野火上位机移植+Freertos+cubemx(一)

本篇博客用于记录一下自己在制作平衡小车使用和学习到的相关东西。
首先是硬件方面:
1.用的两个硅胶轮胎,虽然很贵(140一对),但是真的很不错。
2.直流减速电机(330r/s)
3.0.96寸的oled屏幕
4.维特智能的十轴陀螺仪
5.直流驱动L298N+3S 2200航模锂电池
6.电压显示模块(以后一定要加!!有电池因为不知道电压所以用到亏电了)
7.矩阵键盘(4*4)
8.无线收发模块(正点原子LORA模块)
9.stm32f103zet6核心板
在这里插入图片描述
上为实物图,因为csdn不能贴视频,所以这里就不演示功能了,平衡效果不还可以,但由于小车整体重心有点偏高,所以还有提升空间。
在这里插入图片描述
上位机图片

一.首先下载STM32CUBEMX

这里就不介绍具体怎么下载的了,可以去官网下载安装包,参考相关博客。

二.配置相关单片机和相关功能

1.配置时钟和debug引脚

在这里插入图片描述
首先配置时钟源,并将Clock Configuration的外部时钟源改为72MHz。
在这里插入图片描述
在开启时钟后,如果使用的是stlink,需要将SYS中的debug选项中的Serial Wire选中,并将时钟源选择TIM6。
在这里插入图片描述

2.开启freertos

首先简单介绍一下freertos,为什么要使用freertos?作为一个优秀的实时操作系统,freertos可以将cpu的使用率大大提升,可以在规定时间内完成指定任务,可以实现在多任务中来回切换实现。如原本的延时函数,在实时操作系统中单片机可以在A的延时函数中跳转到B任务直行B任务(大大提高了CPU的利用率),可以参考B站正点原子对于freertos的详细讲解

在左侧最下方有Middleware的选项,里面勾选freertos,选择版本CMSIS_V1(听说第二个版本目前是存在一些bug的)。
在这里插入图片描述
启动后就可以在下方的Task and Queues中添加任务,并对任务进行相应的动态/静态选择,内存分配等。
在这里插入图片描述
我在这里创建了三个任务,分别是小车的控制任务,上位机通信任务,屏幕显示任务。
还有一点容易遗忘的是,如果之后要使用osDelayUntil函数,需要在include parameters选项中将该函数激活(默认是不激活的)
在这里插入图片描述

3.相关功能以及引脚的配置

这里使用的相关功能有:

1.TIM1 编码器模式 用于记录左轮的编码器
2.TIM2 编码器模式 用于记录右轮的编码器
3.TIM3 PWM输出模式 用于控制电机
4.SPI1 用于控制OLED屏幕
5.USART1 连接无线收发模块,与电脑上位机相连
6.UART4 连接陀螺仪
7.8个引脚用于连接矩阵键盘

TIM1 编码器模式 用于记录左轮的编码器

在这里插入图片描述
点开Combined Channels的选项,选择编码器模式(Encoder mode),此时右边的芯片已经可以看到TIM1的通道1、通道2的引脚(我这里是PE9和PE11)已经变绿了,即为使用引脚。
接着勾选Encoder mode的模式,这里选择encoderMode是 TI1和TI2模式,即A、B相都会计数。
Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。
至于分频我觉得选不选取决于两个电机的编码器一圈的值,可以先选择3,后期作调整。
到此一个轮子的编码器就配置好了。

TIM2 编码器模式 用于记录右轮的编码器

同TIM1类似,不多介绍。

TIM3 PWM输出模式 用于控制电机

在这里插入图片描述
先对TIM3进行使能,可以按照图示配置。
ARR和PSC相信大家都很熟悉了,是用来配置定时器的频率的。
h=72MHz/(arr+1)(psc+1)
这个可以根据需要配置,这里将psc设置为0,arr设置为7199。
然后勾选自动重装载使能,完成配置。
(下面的各通道初始值以及配置这里采用的是默认值,如果需要配置可以在下方配置)

SPI1 用于控制OLED屏幕

在这里插入图片描述
这里点开SPI ,勾选Transmit Only Master就使能了SPI1,其他都是默认的即可。
但是这里还需要三个额外的控制引脚,这里直接点击右侧芯片的引脚,选中GPIO_Output。
在这里插入图片描述

接着,在GPIO选项中可以给引脚命名,并对引脚进行初始化。
在这里插入图片描述
这样就完成了OLED 的引脚配置。

USART1 串口配置

在这里插入图片描述
首先点开USART1,在mode中选择Asynchronous。
然后如果需要更改波特率,可以在图中的3位置更改。

UART4 串口配置

与USART1类似,不多介绍。

8个引脚用于连接矩阵键盘

这里主要是配置GPIO,与前面屏幕配置类似,不再过多介绍。

4.代码生成

在Project Manager中可以将代码生成。
在这里插入图片描述
首先是对工程的命名,其次选择编译器,这里用的是MDK,然后在Code Generator 中选择将各个文件分别保存为.c /.h文件.
在这里插入图片描述
在这里插入图片描述

最后点击右上角的GENERATE CODE就可以得到工程文件啦。

由于篇幅限制,下篇再介绍如何设计代码以及pid、上位机通信协议的移植以及oled屏幕使用和矩阵键盘的使用代码。
如果有帮助不妨点个赞~

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:15:04  更:2021-08-07 12:15:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:33:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码