看了好几天的STM32的书了,干说不练不太行。找到一个板子。去淘宝找了资料准备动手。
引脚全引出
有个LDO
上面的配置
背面
STM32最小系统资料包:
https://pan.baidu.com/s/1voa4MsLO3xzu8Y-DC1J3OQ
提取码:3did
资料在此
反正学习,8块钱的东西我觉得也好用,要啥有啥的,给你的F7,点个灯。。。有点丢人。
右边的封装
学习准备三个软件,第一个是烧录,第二个是硬件外设的初始化,第三个是PDF阅读器。
打开以后搜索我们的板子
选T
打开就是这样
可以自由的配置引脚的作用
时钟树
这里选择一个串口
这里可以选择一些串口的参数
串口1的默认引脚在PA10,9
原理图在这里
还可以设置DMA
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个
PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个USART接口、一个USB接口和一个CAN接口。
代码十分规范,我有必要看下
/* 用户代码结束标题 */
/* 定义防止递归包含 -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
外部“C”{
#万一
/* 包括 ----------------------------------------------- -------------------*/
#include "stm32f1xx_hal.h"
/* 私有包含---------------------------------------------- ------------*/
/* 用户代码开始包括 */
/* 用户代码结束包括 */
/* 导出类型---------------------------------------------- --------------*/
/* 用户代码开始 ET */
/* 用户代码结束 ET */
/* 导出的常量---------------------------------------------- ----------*/
/* 用户代码开始 EC */
/* 用户代码结束 EC */
/* 导出的宏---------------------------------------------- --------------*/
/* 用户代码开始 EM */
/* 用户代码结束 EM */
/* 导出的函数原型 --------------------------------------------- */
void Error_Handler(void);
/* 用户代码开始 EFP */
/* 用户代码结束 EFP */
/* 私有定义---------------------------------------------- -------------*/
/* 用户代码开始私有定义 */
/* 用户代码结束私有定义 */
#ifdef __cplusplus
}
#万一
#endif /* __MAIN_H */
导出的标准代码框架
外部震荡,以及下面还有好多
下面的函数就是我们配置文件必有的一个扩展宏
我翻译了一下中文
生成的代码,Core是应用层的代码,里面有和标准库连接的代码:
就是这个main文件
和标准库连接的代码,哈哈哈哈就是个头
剩下就是conf文件,配置外设的一些功能,主要是晶振这块。it是中断
你看这个DMA,我上面设置的
点进去可以看见实现
这里有点像建立一个对应的对象
一些外设的初始化代码
主函数,初始化完就开始死循环,写自己的代码
下面是上面的初始化的具体配置
你看着是面向对象,其实是结构体
结构体
这些是放进去的参数
串口1
然后就是转入标准库
这就是一个串口的功能配置结构体
就看一个
在这里
#define USART1 ((USART_TypeDef *)USART1_BASE)
在这里
#define USART1_BASE (APB2PERIPH_BASE + 0x00003800UL)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL)
#define PERIPH_BASE 0x40000000UL /*!< Peripheral base address in the alias region */
这里是地址的定义
怎么说呢?其实我对于应用没有什么感觉,我只是好奇这些东西如何做出来的而已,很单纯。
烦了,不看了。
驱动层的话,就是CMSIS和一个标准库。
这个就是完整版本的CMSIS。
这里我发现个神奇的东西。
file:///C:/Keil_v5/ARM/PACK/ARM/CMSIS/4.5.0/CMSIS/Documentation/General/html/index.html
居然打开了一个这
顺藤摸瓜摸到这了
下篇看看这个?
看这个USB的接口,PA11,PA12是数据口,ID和地在一起连着。
BOOT是两个脚
看左右是两个BOOT脚
LED是一个一上电就发光,另一个是接到了PC13
这里接着
接口是调试使用的
硬件资源
很丰富,几块钱买的来着。。。
灵活的7路通用DMA可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;DMA控制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地址和目标地址都可以通过软件单独设置。DMA可以用于主要的外设:SPI、I2C、USART,通用、基本和高级控制定时器TIMx和ADC。
妈的,关于定时器,每次看别的书都看不懂,讲一半就是甩代码,甩你妹,你不告诉我是吧!我自己看。
1是牛逼(高级定时器),2,3,4是普通的。
烧录的时候推荐使用官方的这个烧录软件:
连接
选ST-Link
连接了
各种使用
https://github.com/yunswj/STM32-dadada
这里给使用到的两本书都传GT了。