看了好几天的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了。 |
|