在STM32⽅向⼆轮招新考核中,你们需要独⽴完成⼀个项⽬

通过蓝⽛,将MPU6050测量的加速度和⻆速度数据发送到⼿机/电脑上;还有⼀些扩展功能,以附加题的形式呈现。

要求:

• 对于每个挑战点,撰写⼀篇 markdown ⽂档

◦ 该挑战点所需知识的笔记

◦ 实现该挑战点的步骤讲解

▪ 想象这是⼀篇将要发布到CSDN、知乎等平台的教学⽂章

◦ 记录挑战过程中的理解和感悟

◦ 拍⼀张照⽚展⽰挑战的成果

• 对代码尽可能的理解,体会各个步骤的⽤意

• 切忌copy,尽可能⾃⼰学会后独⽴复现

学习⽅法

“To learn by doing.” ‒ 廖院⻓

⼤家花费⼤量时间埋头学习时,也要多多注意学习⽅法的重要性。对于此类项⽬式学习,并⾮是如同

⾼中⼀般学好了所有必备知识,再如同期末考试⼀般集中⽕⼒把项⽬制作出来。我们不推荐在接下来

的⼋周⾥先花四五周的时间刷完⽹课,然后再最后⼏周冲刺做项⽬。

相反,这是⼀种⾃顶向下的分析模式:拿到⼀个项⽬,整理出它有什么功能;为了实现这些功能,需

要些什么知识;为了学会这些知识,我需要些什么学习资料?我需要到互联⽹上查找什么东西?做中

学,学中做,在项⽬导向式的学习中逐步构建⾃⼰的技能树,形成⾃⼰对整个计算机体系结构的⻅

解。

在⼆轮考核中,我们将带领⼤家体验⼀遍“To learn by doing” 的学习模式。该项⽬被划分为四个挑

战点,每个挑战点⼜有⼩挑战点。在每个挑战点中⾃顶向下分析⼀遍,学习该挑战点需求的知识。在

⾮常有限的时间内⾃主找到新知识,并通过知识集成,完成起初认为⼏乎不能完成的任务。

项⽬提交

◦ 各挑战点的markdown⽂档(导出为PDF)

◦ Keil5项⽬⼯程⽂件

• 邮件标题&压缩包⽂件名:" 姓名-stm32⽅向-第⼆期

有疑惑别害羞 ( ///▽/// )

“君⼦⽣⾮异也,善假于物也。” --《劝学》

虽然⼆轮挑战难度较⾼,但冷静分析,划分成简单的⼩任务,多问多思考,⼀定能成功的

• 多去B站看看教程

• 灵活使⽤搜索引擎和chatGPT

• 学会去Google,Github等外⽹查找资料

期待两个⽉后与最棒的你在⼯作室的相遇~

挑战⼀

裸机下驱动 MPU6050 模块

在⻜⾏器的控制中,姿态计算是⾄关重要的⼀步。姿态计算的⽬标是确定⻜⾏器相对于参考坐标系的姿态,通常以欧拉⻆(滚转、俯仰和偏航)或四元数的形式表⽰。⽽MPU6050就是⼀个常⻅的六轴传感器⸺3轴加速度计+3轴陀螺仪。除此之外,MPU6050还能外挂磁⼒计,⽓压计等模块,运⽤系列线性代数与空间⼏何和⼀些算法解算该模块返回的系列数据,就能获得⼀个⻜⾏器的姿态了。

这个挑战点,B站江科⼤有详尽的步骤,⼤家可以伴随着下⾯的步骤开启⼆轮的学习之旅~

挑战要求

1. ⾃⾏查找F103系列⼿册, MPU6050芯⽚⼿册 ,了解各种⼿册的分类与⼤致⽤途

2. 完成软件模拟IIC通信的底层函数书写,实现单⽚机能读写 MPU6050 的寄存器

◦ 为了实现通信,需要找两个GPIO⼝,该怎么配置?

◦ 为了让单⽚机和 MPU6050 互相交流,需要怎么改变这两个GPIO⼝的电平?--学习IIC通信的原理与规则

◦ 按照IIC通信的规则,“有规律的”改变这两个GPIO⼝的电平

3. 阅读 MPU6050芯⽚⼿册

◦ 为了让该芯⽚正常运⾏,需要配置哪些寄存器?

◦ 这些寄存器应该被写⼊什么值?

◦ 为了获取该芯⽚的测量值,需要读取哪些寄存器?

4. 使⽤第⼆步编写的函数,对⽬标寄存器进⾏相应的读/写操作

5. 将读取到的数据通过蓝⽛发送到⼿机上

需要掌握的知识&技能:

1. stm32f103开发环境的搭建(点亮led⼩灯)

2. IIC 通信协议

3. 地址、寄存器的概念&作⽤

4. 对于MPU6050芯⽚⼿册的阅读(英⽂⼿册,还能顺便复习四级考试?)

⼀点提⽰:

1、初学者感到困难是⽐较正常的,⼤家可以多看看⽹上的教程(江科⼤视频最佳)

2、信息检索能⼒⽐较重要,⼤家可以多看看csdn、或者问问淘宝商家

挑战⼆

裸机下驱动蓝⽛模块

挑战要求

1. 简要了解通信接⼝,整理出STM32上常⻅的通信的外设,了解全/半双⼯、同/异步、单端/差分等基

本概念,并指出蓝⽛模块与单⽚机交流所需要的通信协议

2. 使⽤AT指令完成对蓝⽛模块的初始配置

3. 学习USART串⼝通信,实现单⽚机与蓝⽛模块的交流

◦ 使⽤ 标准库函数 完成对USART初始化

4. 单⽚机通过该蓝⽛模块,向⼿机发送“姓名+学号”

需要掌握的知识&技能

• AT指令配置蓝⽛模块

• 串⼝通信协议

• STM32的USART串⼝外设

• USART的发送 功能

挑战三(附加题)

上位机通过蓝⽛向单⽚机发出信号控制单⽚机在OLED屏幕上显⽰不同的内容

挑战要求

1. (附加题)点亮OLED显⽰器

OLED显⽰仅作显⽰数值⽤,驱动不做要求,直接使⽤江科⼤的代码即可。

例如:上位机输⼊不同的信号(⽐如1、2、3等等)

进⼊不同的界⾯,⽐如输⼊1显⽰⾃⼰学号,输⼊2显⽰加速度数据,输⼊3显⽰⻆速度

3. (附加题)上位机发送信号之后,蓝⽛回传相同的信号或者是某应答信号给上位机。⽐如,你通过

上位机传输信号0x01给蓝⽛,蓝⽛收到后,回传0x01或者是回传OK。

4. (附加题)多个上位机连接单⽚机,⽐如⼿机和另⼀个蓝⽛模块。要完成这⼀点,你需要2个能连

接蓝⽛的设备,最容易的获得的应该是你的⼿机和另⼀个连接了蓝⽛模块的单⽚机。

需要掌握的知识&技能

1. USART的接收功能

2. EXTI外部中断

3. 相关标准库函数使⽤⽅法

挑战四(附加题)

强化嵌⼊式开发的基本操作,深⼊理解寄存器与相关外设的运作

挑战要求(选择其中⼀个)

(附加题)将上述⼯程移植到F401CCU6平台

◦ ⾃⾏查找适⽤于该芯⽚的标准库函数

◦ 如何找到开发板的原理图?ReferenceManual在哪⼉找?引脚定义表⼜是在哪个⼿册⾥?全英

⽂读不懂怎么办?

◦ 如何新建适⽤于F401CCU6的⼯程?该把哪些⽂件放到哪个地⽅?这些⽂件起到了什么作⽤?

◦ 时钟树是什么东西?

◦ 在将F103的代码移植到F401到过程中,哪些代码需要修改,哪些代码不需要修改?体会开发流

程中各种规范性要求在代码可移植性的重要性。

(附加题)使⽤直接配置寄存器的⽅法实现相关GPIO与USART串⼝的相关函数◦ 在挑战⼀⾥,⼤家已经有了直接操作MPU6050芯⽚寄存器的经验,效仿这段经历,使⽤直接操

作寄存的⽅式实现GPIO、USART的初始化等函数,逐步摆脱标准库函数,深⼊底层。

需要掌握的知识&技能

1. 信息搜集能⼒

2. 英⽂阅读理解

3. 总结归纳,举⼀反三

4. 深⼊探索STM32芯⽚⼯作原理

附:

参考资料:

• 江科⼤⾃化协STM32⼊⻔教程

◦ 详细的新建⼯程、GPIO、IIC、USART等知识的讲解,还附有样例代码以供参考(除了OLED显

⽰器,不允许复制粘贴任何⾮⾃⼰书的代码)

◦ 除此之外,还有类似教程

▪ 【STM32⼊⻔教程-2023】应该是全B站最好的STM32教程了_哔哩哔哩_bilibili

▪ 野⽕STM32F103教学视频

▪ 正点原⼦STM32F103教学视频

• 正点原⼦资料下载中⼼-蓝⽛串⼝模块

• 意法半导体官⽅⽹站

◦ 在该⽹站上查找芯⽚相关⼿册,如ReferenceManual,DataSheet

希望⼤家不断提升⾃我的信息检索能⼒,学会⾃⼰找到相关的资料、教程、⼿册等。遇⻅问题,先经

过⾃⼰的思考,多多在CSDN,Google,Github等⽹站查找解决⽅案,多问问学⻓学姐,拷打出题

⼈。

一个努力学习的憨憨
最后更新于 2024-04-30