什么是STM32
- ST:意法半导体
- M :ARM的cortex-M内核
- 32:32位单片机
- STM32:意法半导体基于ARM的cortex-M内核开发的32位单片机
什么是ARM
- ARM--Advanced RISC Machine(进阶精简指令集机器)
- ARM是英国一家电子公司的名字
- ARM敢为天下先,首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,授权给半导体公司使用。
- ARM提供一系列内核、体系扩展、微处理器和系统芯片方案
- ARM是一种通用的32位RISC处理器
- ARM是一种功耗很低的高性能处理器
------------------------------------------------------------------------------------------------------------------------------
先建立框架
单片机的核心功能
内核
存储器
时钟
时钟树分析
一、晶振作用
晶振作用:用系统提供时钟频率,保证系统正常工作;可以这样时钟频率保证CPU能够正常工作。
时钟频率其实就是在段时间内可以连续提供脉冲;
脉冲:_|-|_
频率单位换算:
1GHZ = 1000MHZ = 1000 000KHZ = 1000 000 000HZ
1HZ:一秒产生一个脉冲
二、STM32时钟源
LSIRC 32KHZ 低速内部RC振荡器时钟
LSEOSC32.768KHZ 低速外部晶振
16MHZ HSI RC 高速内部RC振荡器时钟
4-26MHZ HSE OSC 高速外部晶振
三、STM32主要的总线时钟如下
SYSCLK 168MHZ
HCLK 168MHZ
AHB1/AHB2 168MHZ
APB1 42MHZ
APB2 84MHZ
复位
LED开发
一、理解LED电路原理
LED0连接在PF9引脚
当PF9输出高电平(1),灯灭
当PF9输出低电平(0),灯亮
小结论:
如果引脚电平由程序员来改,则为输出
如果引脚电平由外部电路来改变,则为输入
二、打开GPIO F组时钟(系统默认不打开外设时钟,为了功耗)
//打开F组时钟
RCC_AHB1ENR |= (1<<5);
三、设置PF9的模式 输出类型 上下拉电阻 及速度
//设置PF9为输出模式 01
GPIOF_MODER &= ~(1<<19); //对位清0
GPIOF_MODER |= (1<<18); //对位置1
//设置PF9为输出推挽
GPIOF_OTYPER &= ~(1<<9); //对位清0
//设置输出速度为50MHZ 10
GPIOF_OSPEEDR |= (1<<19); //对位置1
GPIOF_OSPEEDR &= ~(1<<18); //对位清0
//设置为上拉 01
GPIOF_PUPDR &= ~(1<<19); //对位清0
GPIOF_PUPDR |= (1<<18); //对位置1
四、通过置位/复位寄存器控制数据输出,从而控制LED0亮与灭
GPIOF_BSRR |= (1<<25); //25位置1 ODR输出0 LED0灯亮
delayms(1000);
GPIOF_BSRR |= (1<<9); //9位置1 ODR输出1 LED0灯灭
delayms(1000);
电源管理
单片机的多个重要功能
低功耗模式
ADC
DMA
I/O端口
IO基本知识
三、寄存器地址查找
寄存器物理地址 = 寄存器组基地址 + 偏移地址
寄存器组基地址可在<STM32F4xx中文参考手册.pdf> 53页
一、什么是GPIO
GPIO:(英语:General-purpose input/output),通用型之输入输出的简称
二、STM32F407引脚分组
- 一共有7组IO口(A B C D E F G)
- 每组IO口有16个IO引脚
- 一共16X7=112个IO引脚
外加2个PH0和PH1
一共114个IO口引脚
每组通用 I/O 端口包括:
4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)。
2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)。
1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、
1 个 32 位锁定寄存器(GPIOx_LCKR)
2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。
四、GPIO工作方式
4种输入模式
浮空输入(没有上拉或者下拉电阻)
上拉输入
下拉输入
模拟输入
4种输出模式
开漏输出(带上拉或者下拉)
开漏复用功能(带上拉或者下拉)
推挽式输出(带上拉或者下拉)
推挽式复用功能(带上拉或者下拉)
4种最大输出速度
2MHZ
25MHZ
50MHZ
100MHZ
开漏输出只能输出低电平(0V) 高电平输出要靠外部上拉电阻(类似于51单片机P0的上拉电阻)
推挽式输出:可以输出高电平(1)或者低电平(0)
调试模式
定时器、看门狗定时器、滴答定时器
STM32单片机的C语言编程知识点
define宏定义
ifdef条件编译
外部声明extern:表示变量或函数的定义在其他文件中
专业术语
CPU:
中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核心,是信息处理、
程序运行的最终执行单元。CPU 自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。
MCU:
微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或
者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、
计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形
成芯片级的计算机,为不同的应用场合做不同组合控制。诸如功能手机、PC外围、遥控器,至汽车电子、
工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
SOC:
SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系
统并有嵌入软件的全部内容。(基于cortex-A内核的芯片)
外设:
在芯片内除CPU外的功能模块(内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等)
寄存器
芯片内部寄存器分两种,一种数字存储数据寄存器,这些寄存器CPU用于存储数据,用户不可访问;另一个为接口寄存器,可以被内部或者外部所访问,这些寄存器用于控制相关的外设