第一 二章 小车硬件介绍-(全网最详细)基于STM32智能小车-蓝牙遥控、避障、循迹、跟随、PID速度控制、视觉循迹、openmv与STM32通信、openmv图像处理、smt32f103c8t6

第一篇-STM32智能小车硬件介绍

后续章节也放这里 持续更新中,视频发布在小B站 里面。这边也会更新。
B站视频合集:

STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随

小B站链接:https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click&vd_source=16940ba3adbc66f0fb14e0c1d87db878
后面章节持续跟新的
第三 四章-OLED使用 和串口openmv图像处理小车硬件介绍-(全网最详细)基于STM32智能小车-蓝牙遥控、避障、循迹、跟随、PID速度控制、视觉循迹、openmv与STM32通信、

第五章-PWM控制电机 开源stm32循迹小车详细制作过程(附加完全版代码)-openmv视觉循迹、红外循迹、避障跟随、超声波跟随、蓝牙遥控 m32f103c8t6、stm32cubemx
后面还有视觉、RTOS等功能先不列举了,大家直接到专栏看把。

1.1-元件选型

这里给出元件列表和数量
后面每个元件使用前会给出参数等。
在这里插入图片描述

1.2-原理图与PCB

底板原理图

各个模块的供电电压?

模块接口引脚顺序?

如何确定使用单片机那个引脚?
在这里插入图片描述
STM32F103C8T6核心板原理图(可能使用不同核心板略有差异)
在这里插入图片描述
PCB顶层截图

不同类型线粗细

布局总线方式
在这里插入图片描述

1.3-焊接

PCB正面
在这里插入图片描述
PCB背面
在这里插入图片描述
然后插上元件

在这里插入图片描述

1.4-结构与组装

这是组装好的车体照片
在这里插入图片描述
然后小车安装PCB

注意电机和红外对管不要插错
在这里插入图片描述

1.5-测试

使用万用表蜂鸣挡 测量 电源引脚和GND是否短路

第二章-GPIO与中断

2.0-新建工程

在这里插入图片描述
建议选择和我一样的版本

在这里插入图片描述
新建一个工程
在这里插入图片描述
选择芯片
在这里插入图片描述
选择时钟源
在这里插入图片描述
选择调试
在这里插入图片描述
勾选生成独立的文件
在这里插入图片描述
设置保存地址
在这里插入图片描述
勾选这个不添加没有使用库文件可以减小工程文件大小(也可以不勾选,保持默认设置)
在这里插入图片描述
MDK打开工程,调低优化等级
在这里插入图片描述
以上是每次新建工程要做的

以后我们不在新建工程,使用之间的工程即可

2.1-点灯

这里我们点亮PC13连接的小灯
在这里插入图片描述
配置PC13
在这里插入图片描述
生成代码
在这里插入图片描述
生成代码后,使用MDK打开工程
在这里插入图片描述
在这里插入图片描述
在BEGIN和END添加代码

在这里插入图片描述

	HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
	HAL_Delay(500);

根据自己的芯片选择
在这里插入图片描述
烧录程序(必看 使用其中一个方法)
在这里插入图片描述

方法一:使用DAP LINK

接线图
在这里插入图片描述
DAP 在Win 10 免驱动的
然后根据自己使用的工具在MDK中设置下载工具
在这里插入图片描述
设置下载算法
在这里插入图片描述
然后下载程序,复位小灯闪烁
在这里插入图片描述
烧录后现象

小灯每0.5秒闪烁一次

方法二:使用stlink

接线图

STlink不要接3.3V
在这里插入图片描述
使用Stlink 前先安装驱动
在这里插入图片描述
双击运行
在这里插入图片描述
选择ST-Link
在这里插入图片描述
选择算法
在这里插入图片描述
然后点击编译,烧录
在这里插入图片描述
烧录后现象

小灯每0.5秒闪烁一次

补充可能遇到的失败情况

使用DAP-LINK

如果我们芯片IDCODE是0x2 开头的那么我们需要替换一下Keil 的器件包

(如果你是0x1 开头的,如果能下载可以不替换)
在这里插入图片描述
STM32小车相关资料V3.3.0\04使用的软件\中科芯CKS芯片支持包
在这里插入图片描述
在这里插入图片描述
下面这个算法就会自动切换
在这里插入图片描述

使用stlink

2.2-按键

先看原理图

PB4–KEY1 单片机设置下拉输入-、上降沿触发

PA12–KEY2 单片机设置上拉输入、下降沿触发
在这里插入图片描述
开始配置
在这里插入图片描述
使能外部中断
在这里插入图片描述
然后生成代码

重新实现中断回调函数、编写按键检测程序
在这里插入图片描述
在gpio.c 中我们编写该函数
在这里插入图片描述

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == KEY1_Pin){//判断一下那个引脚触发中断
	//这里编写触发中断后要执行的程序
	HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//切换LED GPIO状态
	}
	if(GPIO_Pin == KEY2_Pin){//判断一下那个引脚触发中断
	//这里编写触发中断后要执行的程序
	HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//切换LED GPIO状态
	}
}

把main中控制闪烁注释掉
在这里插入图片描述
烧录后的现象

按下KEY1 或者KEY2可以切换LED灯开关状态

我用夸克网盘分享了「V3小车笔记网盘」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/959b889e058b

添加链接描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950512.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络】电路交换(Circuit Switching)、报文交换(Message Switching)和分组交换(Packet Switching)

电路交换(Circuit Switching):一条专用的通信线路(或电路)( 电话专用线路,好处:专用稳定,有没有数据都被占用,坏处:容易浪费) 报文交换…

Pixel 6a手机提示无法连接移动网络,打电话失败!

1、开启VoLTE 2、如果没有,下载shizuku和PixelIMS应用。 shizuke Releases RikkaApps/Shizuku GitHub PixellMS Release v1.2.8 kyujin-cho/pixel-volte-patch GitHub 3、安装shizuke启动,开通root可以直接点击下面的启动,如果没有就…

游戏关卡设计的常用模式

游戏关卡分为很多种,但常用的有固定套路,分为若干种类型。 关卡是主角与怪物、敌方战斗的场所,包括装饰物、通道。 单人游戏的关卡较小,偏线性; 联机/MMO的关卡较大,通道多,自由度高&#xf…

DC/AC并网逆变器模型与仿真MATLAB

DC/AC并网逆变器是一种将直流电(DC)转化为交流电(AC),并将其与电网并联的设备。它的核心功能是实现直流电源(如光伏电池板或储能电池)与电网的有效连接,同时保证输出电能质量满足电网…

作业:IO:day2

题目一 第一步:创建一个 struct Student 类型的数组 arr[3],初始化该数组中3个学生的属性 第二步:编写一个叫做save的函数,功能为 将数组arr中的3个学生的所有信息,保存到文件中去,使用fread实现fwrite 第三步&#xf…

环动科技平均售价波动下滑:大客户依赖明显,应收账款周转率骤降

《港湾商业观察》施子夫 2024年12月18日,浙江环动机器人关节科技股份有限公司(以下简称,环动科技)的上市审核状态变更为“已问询”,公司在11月25日科创板IPO获上交所受理,独家保荐机构为广发证券。 此次环…

【数据可视化-11】全国大学数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

SAP 02-AMDP Functions for CDS Table Functions

1. 创建一个Core Data Service Table Functions 新建 Core Data Service Table Function 定义CDS Table Functions EndUserText.label: a simple AMDP for CDS Table Functions ClientDependent: true //打开 Open SQL 的自动客户端处理 defin…

Ungoogled Chromium127 编译指南 MacOS篇(八)- 开始编译

1. 引言 完成了所有依赖包的安装后,我们终于来到了最关键的编译阶段。在开始编译之前,有一些重要的配置信息需要了解。本文将指导您完成整个编译过程。 2. 签名相关说明 虽然在我们的测试编译中不需要进行签名操作,但了解官方的签名要求仍…

SpringBootWeb案例-1(day10)

准备工作 需求 & 环境搭建 需求说明 环境搭建 步骤: 准备数据库表(dept、emp)创建 springboot 工程,引入对应的起步依赖(web、mybatis、mysql 驱动、lombok)配置文件 application.properties 中引入 mybatis 的配置信息&…

动手学深度学习-卷积神经网络-1从全连接层到卷积

目录 不变性 多层感知机的限制 平移不变性 局部性 卷积 “沃尔多在哪里”回顾 通道 小结 我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互&#xff0…

【HTML+CSS+JS+VUE】web前端教程-4-标签之段落、换行、水平线

标签之段落 段落是通过<p>标签定义的换行 如果您希望在不生产一个新段落的情况下进行换行&#xff08;新行&#xff09;&#xff0c;请使用<br><br />元素是一个空的HTML元素 <p>这个<br>段落<br>演示了分行的效果</p>水平线 <…

vulnhub靶场【DC系列】之7

前言 靶机&#xff1a;DC-7&#xff0c;IP地址为192.168.10.13 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用VMWare&#xff0c;网卡为桥接模式 对于文章中涉及到的靶场以及工具&#xff0c;我放置在网盘中&#xff0c;链接&#xff1a;https://pan.quark…

腾讯云AI代码助手编程挑战赛-图片转换工具

作品简介&#xff1a; 解决了人们学习生活中的图片格式转换问题&#xff0c; 制作该脚本&#xff0c;省去了打开在线编辑器操作的时间&#xff0c; 免费为用户提供图片格式的转换的实用小工具 技术架构 python语言的tk库来完成的GUI页面设计&#xff0c; 引用PIL包转换图…

Linux 文件的特殊权限—ACL项目练习

本文为Ubuntu Linux操作系统- 第二十一期~~ 上期回顾: 【ACL权限控制详解】 更多Linux 相关内容请点击&#x1f449;【Linux专栏】~ 主页&#xff1a;【练小杰的CSDN】 文章目录 项目项目要求具体的设置命令如下问题2问题3第一步&#xff1a;设置默认ACL前&#xff0c;在projec…

系统日志优化---自定义springboot-starter日志组件供各个服务使用

在优化项目时发现各个微服务都有各自的接口调用日志逻辑&#xff0c;比如每个服务都定义一个aop类拦截&#xff0c;十分冗余&#xff0c;其实是可以做成starter被各个服务引用使用&#xff0c;前提要先了解一下springboot自动装配原理 创建springboot工程&#xff0c;如果是jdk…

Matlab贝叶斯估计MCMC分析药物对不同种群生物生理指标数据评估可视化

全文链接&#xff1a;https://tecdat.cn/?p38756 摘要&#xff1a;本文着重探讨了如何利用Matlab实现贝叶斯估计。阐述了具体的实现流程&#xff0c;涵盖数据加载、先验常数设定、马尔可夫链蒙特卡洛&#xff08;MCMC&#xff09;属性指定、模型构建、运行链条以及结果查看等环…

js:日期对象和dom节点

日期对象 事件对象在前端开发里经常用来表示日期&#xff1a; 可以获取当前系统的时间 实例化 使用new关键字来实例化一个对象&#xff1a; const date new Date()console.log(date); 获取当前时间 const date new Date(2008-8-8)console.log(date); 获取指定时间 写得…

Ⅱ.INTRODUCTION TO CUDA C (CUDA C 入门)

前言 上一节环境配置好了&#xff0c;我们开始吧&#xff01; 一、A First Program 1. Hello, World! 我们先写一个C语言的 Hello, World! 作为对比 int main(void){printf("Hello, World!\n");return 0; }大家应该知道这个代码运行在CPU上吧&#xff0c;我们CP…

rsync如何实时同步

一、准备rsyncd服务环境 backup服务器&#xff08;rsync服务端&#xff09; 1、恢复了快照&#xff0c;重新安装rsync服务端 2、快速的部署rsyncd服务端 #!/bin/bash yum install rsync -ycat > /etc/rsyncd.conf << EOF uid www gid www port 873 fake supe…