栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

stm32 学习笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

stm32 学习笔记

书籍:《STM32库开发实战指南 基于STM32F103(第2版)》 机械工业出版社 刘火良

创建时间:2022年2月14日

GPIO属于高速外设,其寄存器为 32 位,占 4 字节。(P31)

GPIOx_BSRR(x=A…E) 寄存器可以实现置位、清除操作,对BRx(x=0…15) 写入 1 清零,对 BRx(x=0…15) 写入 0 无影响,对 BSx(x=0…15) 写入1 置位。(P33)

工程文件夹说明 (P38)

名称作用
Listing存放编译器编译时产生的 C/汇编/链接的代码清单
Objects存放编译产生的调试信息、hex文件、预览信息、封装库等

GPIO 被分成很多组,每组有 16 个引脚。(P43)

推挽输出一般应用在输出电平为 0 和 3.3V 且需要告诉切换开关状态的场合。(P45)

开漏输出一般应用在 IIC、SMBUS 通信等需要 “线与” 功能的总线电路中,或者应用在电平不匹配的场合(如需要输出 5V 的高电平,可在外部接一个上拉电阻,上拉电源为 5V,并且 GPIO 设置为开漏输出,当输出高阻态时,由上拉电阻和电源向外输出 5V 的电平)。(P45)

GPIO 的输入信号在 GPIOx_IDR 寄存器中,输出信号写出到 GPIOx_ODR 寄存器中。(P46)

GPIO 浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候用这个模式。(P47)

GPIO 输出时的速度可配置,有 2MHz、10MHz、50MHz 几种选项,支持的频率越高功耗越大。(P47)

GPIO 设置输出模式时肖特基触发器是打开的,即输入可用,通过 GPIOx_IDR 读取。(P47)

GPIO 使用复用功能时,输出速度可配置,可工作在开漏和推挽模式,但是输出信号源于其他外设,GPIOx_ODR 无效;输入可用,通过输入数据寄存器读取,但一般直接用外设的寄存器来获取该数据信号。(P47)

编写的代码及其结构

startup_stm32f10x_hd.s 文件由官方提供。(P50)main.c 文件自己编写,需要实现 SystemInit 函数(ST库已经实现了)和 main 函数。(P51)

BSRR 和 BRR 寄存器的操作最终影响的都是 ODR 寄存器。(P53)

GPIO 的使用需要开启外设时钟,其它外设也有时钟,需要使用这些外设时要打开对应的时钟。(P55)

编译器有时候会对没有执行程序的变量进行优化,这时需要用 volatile 声明变量为易变的变量,防止编译器优化代码。(P59)

通过设置 GPIOx_CRL 和 GPIOx_CRL 来设置 GPIO 的模式。(P66-P67)

GPIO 的上/下拉输入不是通过配置某一个寄存器来实现的,而是通过写 BSRR 或 BRR 寄存器来实现的。(P71)

STM32 标准库说明 (P76)

可以从官网获得:https://www.st.com/zh/embedded-software/stsw-stm32054.html#get-software

文件或文件夹描述
Libraries驱动库的源代码及启动文件
Project用驱动库写的例子和工程模板
Utilities基于 ST 官方实验板的例程
stm32f10x_stdperiph_lib_um.chm库帮助文档

在使用库开发时需要把 Libraries 目录下的库函数文件添加到工程中,并查阅库帮助文档来了解 ST 提供的库函数。

Libraries 文件夹说明

    CMSIS 文件夹

    上面需要用到的文件及其作用如下

    内核文件:

    文件作用
    core_cm3.c实现了操作内核外部寄存器的函数(用得比较少)
    core_cm3.h实现了内核的寄存器映射,对应外设头文件 stm32f10x.h

    core_cm3.h 头文件包含了 stdint.h 头文件,这是一个 ANSI C 文件,独立于处理器之外,位于 RVMDK 这个软件的安装目录下。主要是提供一些类型定义如 uint8_t 等,旧版的程序中出现的 u8、u16、u32 等类型代表无符号 8 位、16位、32位整形,定义的位置是 STM32f10.h 文件中,一般不建议用旧版类型定义变量。

    startup 文件(根据自己的芯片选取即可):

    文件作用
    startup_stm32f10x_ld.sld:low-density 小容量,Flash 容量为 16 ~ 32 k
    startup_stm32f10x_md.smd:medium-density 中容量,Flash 容量为 64 ~ 128 k
    startup_stm32f10x_hd.shd:high-density 大容量,Flash 容量为 256 ~ 512 k
    startup_stm32f10x_xl.sxl:超大容量,Flash 容量为 512 ~ 1024 k

    以上四种都属于基本型,包括 STM32F101xx、STM32F102xx、STM32F103xx 系列

    文件作用
    startup_stm32f10x_cl.scl:connectivity line devices 互联型,特指 STM32F105xx 和 STM32F107xx 系列
    startup_stm32f10x_ld_vl.svl:value line devices 超值型系列,特指 STM32F100xx 系列
    startup_stm32f10x_md_vl.s同上
    startup_stm32f10x_hd_vl.s同上

    其它文件

    文件作用
    stm32f10x.h实现了片上外设的所有寄存器的映射,在内核中与之对应的头文件是 core_cm3.h
    system_stm32f10x.c实现了 STM32 的时钟配置,操作的是片上的 RCC 这个外设。里面定义了 SystemInit 函数,调用该函数后系统的时钟被初始化为 72M。不会直接在这个文件里面修改时钟配置函数。

    STM32F10x_StdPeriph_Driver 文件夹

    文件夹下有 inc(include 的缩写) 和 src(source 的缩写) 两个文件夹,里面的文件属于 CMSIS 之外的、芯片片上的外设部分。

    src 里面是每个设备外设的驱动源程序;inc 里面是相对应的外设头文件。

    每个外设对应一个 .c 和 .h 后缀的文件,必须要同时对应包含到工程中!

    里面的 misc.c 文件提供了外设对内核中的 NVIC (中断向量控制器)的访问函数,配置中断时必须把这个文件添加到工程中。

Project 文件夹说明

在该目录下的 STM32F10x_StdPeriph_Template 下,存放了官方的一个库工程模板,在用库建立一个完整的工程时,需要添加这个目录下的 stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h 和 system_stm32f10x.c 这 4 个文件。

文件作用
stm32f10x_it.c专门用来编写中断服务函数,在修改前就已经有一些系统异常(特殊中断)的接口,其他普通中断服务函数由我们自己添加
system_stm32f10x.c包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数,即 SystemInit 函数,但在做系统时钟配置的时候会另外重写时钟配置函数
stm32f10x_conf.h被 stm32f10x.h 文件包含,用于统一包含外设的驱动库头文件,里面包含了所有外设的头文件,可以注释掉不需要的外设头文件,最后只需包含 stm32f10x.h 头文件即可包含所有外设驱动库。还可配置是否使用 “断言” 编译选项,定义 USE_FULL_ASSERT 宏来使能断言并定义 assert_failed 函数来调用 printf 函数输出错误说明,发布时会取消 USE_FULL_ASSERT 宏来使程序全速运行。

库各文件之间的关系(图片是书里的图):

把 CMSIS 层的文件包含到工程,除了特殊系统时钟需要修改 system_stm32f10x.c之外,其它不用修改,也不建议修改。对于用户层的几个文件,就是在使用库的时候,针对不同的应用对库文件进行增删(用条件编译的方法增删)和改动的文件。

常用官方资料(P81)

名称描述
《STM32F10X-中文参考手册》介绍了 STM32 芯片的片上外设。
《STM32 规格书》相当于 STM32 的数据手册,包含了所有引脚功能说明、存储器架构及芯片外设架构说明
《Cortex-M3 内核编程手册》ST公司提供,讲解 STM32 内核寄存器相关的说明,如系统定时器、
NVIC 等核外设的寄存器,是对《STM32F10X-中文参考手册》的补充。
(了解内核时不如以下两个手册详细)
《Cortex-M3 权威指南》ARM 公司提供,详细讲解了 Cortex 内核的架构和特性
《stm32f10x_stdperiph_lib_um.chm》库的帮助文档

待续…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号