必备知识

概述

什么是 STM32:什么是STM32

STM32 能做什么:STM32能做什么

ST 官方官方网址:ST官网 (st.com)

ST 官方中文网站:STMCU中文官网

型号

STM32 怎么选型:STM32怎么选型

STM32 F1与F4的区别:【经验分享】ST公司STM32F4与STM32F1的区别

学习资源

1、STM32 学习

STM32 标准库开发:STM32入门教程-2023持续更新中

STM32 HAL库开发:【野火】STM32 HAL库开发实战指南 教学视频 手把手教学STM32全系列

2、Kicad

KiCad 是一款 PCB 设计软件,优点是开源、有许多插件可用、有许多快捷键方便操作

学习路径:KiCad | 6.0 | 简体中文 | Documentation | KiCad

PCB(Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气相互连接的载体。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。

PCB 可以粗浅的理解为焊接死的面包板,目的是为了防止连线在搬运的过程中松动导致问题

3、部分项目学习

可以通过学习他人的部分项目,深入对开发过程的理解

智能小车入门:STM32智能小车教程-循迹-避障-蓝牙遥控-跟随-stm32f103c8t6-stm32最小系统-手把手入门教程

智能送药小车标准库:电赛培训-基于21年赛题-智能送药小车

智能送药小车HAL库:电赛“智能送药小车”【干货教程】STM32HAL库CubeMX+pid串级控制+OpenMV数字识别

智能送药小车:2021年电赛F题智能送药小车(国二)开源分享

其他智能送药小车:2021全国电赛真题(F)—— 智能送药小车

小车跟随行驶系统:2022电赛省一-小车跟随行驶系统(C题)

电磁炮:2019电赛—-模拟电磁曲射炮

滚球:电赛入坑—-2017年电赛国赛真题滚球控制系统

4、电机

电机快速初步了解:有刷电机与无刷电机的原理

电机学习:一个视频学完生活中的所有电机

电机驱动:一个视频了解生活中电机的驱动控制及调速方法

以上均为快速了解,作为科普简单留下感性印象,下面的视频能更完善的学习电机

视频地址:【野火】电机系列教学视频,基于STM32硬件(步进电机,直流有刷电机,直流无刷电机,舵机,永磁同步电机PMSM)PID闭环算法

在线文档:【野火】电机应用开发实战指南—基于STM32

5、PID算法

电机中的 野火视频 有讲解,此外还有一些资源

PID理论学习:从不懂到会用!PID从理论到实践~

6、相关模块学习

灰度传感器:一种双灰度传感器巡黑线方案

相关资料

总体

STM32F10xxx参考手册(中文)STM32F103C8T6/STM32F10xxx参考手册(中文)

数据手册:STM32F103C8T6/STM32F103x8B数据手册(中文)

Cortex-M3权威指南:STM32F103C8T6/Cortex-M3权威指南

野火F103 标准库开发指南:野火STM32库开发实战指南——基于野火MINI开发板

野火F103 HAL库开发指南:野火F103 HAL库开发指南

HC-05模块

概述:【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)

双机通信:两个HC-05蓝牙互相连接方法

所有AT指令:HC-05 嵌入式蓝牙串口通讯模块 AT 指令集

如果接受乱码,注意看波特率是否正确,默认值为9600!

STM32 接受蓝牙信息代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stm32f10x.h"

void My_USART1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStrue;
USART_InitTypeDef USART_InitStrue;
NVIC_InitTypeDef NVIC_InitStrue;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //GPIO端口使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //串口端口使能

GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP; // 模式: 复用输出
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9; // 引脚: A9
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz; // 速度: 10MHz
GPIO_Init(GPIOA,&GPIO_InitStrue);

GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING; // 模式: 浮空输入
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10; // 引脚: A10
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz; // 速度: 10MHz
GPIO_Init(GPIOA,&GPIO_InitStrue);

USART_InitStrue.USART_BaudRate=9600; // 波特率: 9600
USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 硬件流控制: 无
USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 串口模式: 接受与发送
USART_InitStrue.USART_Parity=USART_Parity_No; // 极性: 无
USART_InitStrue.USART_StopBits=USART_StopBits_1; // 停止位: 1位
USART_InitStrue.USART_WordLength=USART_WordLength_8b; // 数据位长度: 8位

USART_Init(USART1,&USART_InitStrue);

USART_Cmd(USART1,ENABLE); //使能串口1

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //开启接收中断

NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1; // 优先中断级别: 1
NVIC_InitStrue.NVIC_IRQChannelSubPriority=1; // 普通中断级别: 1
NVIC_Init(&NVIC_InitStrue);
}

void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
res= USART_ReceiveData(USART1);
USART_SendData(USART1,res);
}
}

int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
My_USART1_Init();
while(1);
}

电机控制

电机驱动与编码器:TB6612与电机编码器

超声波跟随

HC-SR04模块:超声波原理及测距

超声波跟随小车:超声波跟随小车

调试

串口调试:USART-FlyMcu下载程序

配合蓝牙模块可实现无线烧录功能

红外遥控

介绍:STM32 红外遥控器详解