前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STM32杂文(Cube生成版本)

STM32杂文(Cube生成版本)

作者头像
云深无际
发布2022-01-05 08:15:48
3990
发布2022-01-05 08:15:48
举报
文章被收录于专栏:云深之无迹

看了好几天的STM32的书了,干说不练不太行。找到一个板子。去淘宝找了资料准备动手。

引脚全引出

有个LDO

上面的配置

背面

代码语言:javascript
复制
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接口。

代码十分规范,我有必要看下

代码语言:javascript
复制
/* 用户代码结束标题 */

/* 定义防止递归包含 -------------------------------------*/
#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

然后就是转入标准库

这就是一个串口的功能配置结构体

就看一个

在这里

代码语言:javascript
复制
#define USART1              ((USART_TypeDef *)USART1_BASE)

在这里

代码语言:javascript
复制
#define USART1_BASE           (APB2PERIPH_BASE + 0x00003800UL)
代码语言:javascript
复制
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x00010000UL)
代码语言:javascript
复制
#define PERIPH_BASE           0x40000000UL /*!< Peripheral base address in the alias region */

这里是地址的定义

怎么说呢?其实我对于应用没有什么感觉,我只是好奇这些东西如何做出来的而已,很单纯。

烦了,不看了。

驱动层的话,就是CMSIS和一个标准库。

这个就是完整版本的CMSIS。

这里我发现个神奇的东西。

代码语言:javascript
复制
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

连接了

各种使用

代码语言:javascript
复制
https://github.com/yunswj/STM32-dadada

这里给使用到的两本书都传GT了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档