分享

STM32杂文(Cube生成版本)

 云深无际 2021-12-30

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多