STM32学习第一课--工程建立(云端备份与自我复盘)
STM32命名规则
重点关注引脚数、闪存容量、封装、温度范围
- 单片机与电脑的对应
- STM32选型:(性能)由高到低,(内存/闪存)由大到小
- 芯片的基本参数:主频/FLASH/SRAM、工作电压/最大电流、IO引脚接入电压范围、单个IO引脚最大电流
- 引脚类型:电源引脚、晶振引脚、复位引脚、下载引脚(三类:JTSG、SWG、串口)、BOOT引脚、GPIO引脚
- 最小系统:主控芯片+电源电路+下载调试电路+BOOT启动电路+晶振电路+复位电路+其它电路
- 复位电路 选用10kΩ电阻+104(10*10^4pF)电容,可以达到上电复位(导通的一瞬间NRST引脚电压=GND)的效果。
参考电路:
- IO分配:优先分配特定外设IO,然后分配通用IO,最后微调
- Output窗口的含义:
- 编译步骤:
使用部分
- 共建三个文件夹Start放启动文件;User放自己写的函数;Library放库函数
- Start:①C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm全部;
【同51建立工程文件之后需要配置启动文件并粘贴到工程文件夹下(可以新建一个专门存放启动文件的文件夹START),地址如下(以STM32F103C8为例)】
②C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x最后三个;
【STM32F10x.h 是STM32的外设寄存器描述文件(作用同51单片机的头文件REGX52.H)
System_stm32f10x.h/c 用来配置时钟
此三文件同样需要粘贴到START启动文件夹下】
③C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport两个。
【Core_cm3.c/h 内核(Cortex-M3)寄存器的描述文件+内核的配置函数】
User:①C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template三个;
【Stm32f10x_conf.h用来配置库函数头文件的包含关系+用来参数检查的函数定义
Stm32f10x_it.c/h用来存放中断函数】
Library:①C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc;全部
【库函数的头文件】
②C:\Users\29397\Desktop\JGY\学习\STM32学习文集\新版32套件压缩包\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src。全部
【库函数】
新建工程步骤:
- 建立工程文件夹,Keil中新建工程,选择型号
- 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
- 工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里
- 工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹
- 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
- 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run
- 将启动文件(md.s)添加到目录下
(为什么是md呢)头文件缩写与芯片型号的对应关系:
- 添加头文件路径【USER START LIBRARY三个都需要添加,因为是我们手动添加的,所以要把地址加进去】
定义使用标准外设驱动,是使用库函数的条件编译,只有使用库函数必须定义
- 编码格式选择UTF-8,可以防止中文乱码 扳手��工具-Editor修改TAB键空数,colors & fonts修改字体大小,选择C/C++以及ASM的editor files
- 选择适配器,并在setting后选择reset and run,自动下载运行
- 工程架构
- 通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式
模式名称 | 模式别名 | 性质 | 特征 |
浮空输入 | GPIO_Mode_AIN | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
上拉输入 | GPIO_Mode_IN_FLOATING | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
下拉输入 | GPIO_Mode_IPD | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
模拟输入 | GPIO_Mode_IPU | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
开漏输出 | GPIO_Mode_Out_OD | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
推挽输出 | GPIO_Mode_Out_PP | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS |
复用开漏输出 | GPIO_Mode_AF_OD | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
复用推挽输出 | GPIO_Mode_AF_PP | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |