巡线小车制作
电烙铁在275度左右比较适合上锡。
103可调电阻最大阻值(两端引脚的阻值)约为10k欧,中间的引脚与两端引脚阻值可调。
104可调电阻最大阻值约100k欧。
stm32(Cortex—M3)程序的启动过程
一上电就会触发复位异常。
并且会跳转到中断向量表 特定偏移位置,然后获取里面的内容。
修改复位异常内的内容,就可以让处理器去执用户指定的操作。
启动文件(.s)做了如下四个步骤:
- 初始化堆栈指针
- 设置PC指针的值(该值减8即是当前指令运行的地址)
- 设置中断向量表
- 配置系统时钟
- 调用c库函数__main初始化堆栈,最终会跳转到用户编写的main函数
(Stack 栈 | Heap 堆)
HAL库工程模板注意事项
固件包
固件包中的Drivers文件夹内包含了BSP、CMSIS、HAL_Driver。BSP是官方开发板的支持包,CMSIS里是各种接口库,HAL_Driver是HAL库驱动包。
Middlewares是中间件,提供一些对硬件的服务,例如图形界面库、主从机接口库等
Projects内是官方开发板的各种工程实例,包含各种外设如何使用 ,以及外设和中间件的耦合。
HAL库关键文件
在HAL库开发指南里的第三章和第五章中有各种文件的介绍,为了理解工程的运行流程,必须要了解这些文件的作用和它们之间的关系,才能在项目的开发中得心应手。
startup_stm32f103xe.s(启动文件)(在组MDK-ARM下):主要进行堆栈的初始化,中断向量表以及中断函数的定义等
system_stm32f1xx.c与同名的.h文件(在组CMSIS下):一起声明和定义了系统初始化函数SystemInt以及系统时钟更新函数SystemCoreClockUpDate。进行时钟系统的一些初始化操作和中断向量表偏移地址设置。
stm32f1xx_hal.c和同名的.h文件(在组HAL_Driver下):包含HAL通用API(比如HAL_Init,HAL_Delnit,HAL_Delay等)
其他:
stm32f1xx_it.c和同名.h文件(在组User/Core下):一些中断服务函数的声明
stm32f1xx_hal_msp.c(在组User/Core下): MSP是MCU support package的缩写,作用是进行mcu级别的硬件初始化设置。
stm32f1xx_hal_def.h:包含HAL的通用数据类型定义和宏定义
stm32f1xx.h:是所有f1系列的顶层文件,任何型号的f1芯片都必须包含这个文件
stm32f1xx_hal_conf.h:HAL的配置文件,主要用来选择使能何种外设以及一些时钟的相关参数设置。会决定哪些外设驱动会被编译到工程中
stm32f103xx.h: 是stm32f103系列芯片通用的片上外设访问层头文件。主要是寄存器的定义声明以及封装内存操作。
_weak修饰符
如果在函数名称前面加上_weak修饰符,则是一个弱函数。用户可以在文件中重新定义一个同名函数,最终编译的时候,会选择没有_weak修饰的函数。
工程目录下的组
- 组HALLIB下面存放ST官方提供的HAL库文件
- 组CORE下面存放固件库必须的核心头文件和启动文件
- 组SYSTEM存放ALIENTEK提供的共用代码
- 组HARDWARE下面存放的是每个实验的外设驱动代码
- 组USER下面存放用户代码
- 组Doc放说明文件
MDK5使用技巧
一般建立stm32工程推荐使用cubeMX工具,但也要学习手动移植Hal库,以便更熟练地使用MDK5。在HAL库开发指南里的第三章第5小节中有一些使用技巧,可以常去翻看并且主动去使用。
Include红叉报错
红叉报错,但不影响编译。Delay.h等头文件包含不了