1.硬件开发平台:
STM32最小系统板、USB转串口模块、STLINK
万用表、示波器、镊子、剪刀(方便面包板插线)、面包板、0.96寸OLED
LED、按键、有源蜂鸣器模块(内置振荡源)
传感器模块:光敏电阻模块、热敏电阻模块、对射式红外模块、反射式红外模块
W25Q64 FLASH存储模块、MPU6050陀螺仪和加速度计、旋转编码器、直流电机、TB6612电机驱动模块、SG90舵机。
2.ARM简介
ARM既指ARM公司,也指ARM处理器内核(程序指令的执行、加减乘除的运算,都在内核里完成;相当于整个芯片的CPU)。类似电脑厂商,可以拿Intel或者AMD的CPU,完善外围电路,推出自己品牌的电脑。
ARM公司是全球领先的半导体知识产权(IP)提供商(只设计ARM内核,不生产实物,实际的内核是各大半导体厂商连同芯片一起制作出来,ARM授权各大厂商它的设计,再收取授权费作为盈利方式)(开放合作、利益共享、风险共担的商业模式),全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片
ARM内核型号:
蓝色:以前生产的老版本内核。从ARM1、2发展过来的直到ARM11。推出Cortex内核,三个子型号A R M适用不同场景。
A系列适用于高端应用型领域 Application 主要应用于手机领域、苹果、高通、联发科用的芯片都是基于ARM架构的(A系列,性能最高,发展最快的系列,
STM32简介
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器(STM32 ST公司,M微控制器Microcontroller MCU 32位单片机)(ARM Cortex-M内核 单片机的核心部分)
ST公司拿着ARM公司设计的内核,再完善外围电路,整个封装起来,做成STM32(基于ARM内核的芯片)
四个系列:
高性能系列:F2、F4、F7、H7等
主流系列:本次主要学习的F1
超低功耗系列:L0、L1、L4、U5等
无线系列:WL、WB
系列:主流系列STM32F1
内核:ARM Cortex-M3
主频:72MHz
RAM:20K(SRAM) 运行内存RAM,实际存储介质是SRAM
ROM:64K(Flash) 程序存储器ROM,实际的存储介质是Flash闪存
供电:2.0~3.6V(标准3.3V)
封装:LQFP48
3.4片上资源(也叫外设) Peripheral
目前学习的就是外设,通过程序配置外设,完成我们想要的功能
深颜色的是位于cortex内核里的外设,剩下的是内核外的外设
STM32F1的所有外设:
1.NVIC 嵌套向量中断控制器 内核用于管理中断的设备,比如配置中断优先级
2.SysTick 主要用来给操作系统提供定时服务的,STM32可以加入操作系统,比如FreeRTOS,UCOS等,如果用了操作系统,就需要3.SysTick 来提供定时来进行任务切换功能(目前没用到RTOS,可以用这个定时器完成Delay函数)
4.RCC 对系统的时钟进行配置,使能各模块的时钟。STM32中,其他的剩下的外设(非内核的)上电的情况下默认没有时钟,没有时钟,操作外设无效,不会工作。目的:降低功耗(操作外设之前必须使能时钟)
5.GPIO 通用IO口,点灯,读取按键等
6.AFIO 完成复用端口的重定义,中断端口的配置、
7.EXIT 配置好外部中断,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
8.TIM 最常用,功能最多的外设。分为高级定时器(最复杂),通用定时器(常用)、基本定时器三种类型。能完成定时中断的服务,还可以完成测频率,生成PWM波(电机、舵机基本要求)、配置成专用的编码器接口等功能
9.ADC 读取IO口的模拟电压值,无需外部AD芯片,使用方便
10.DMA 帮助CPU完成搬运大量数据的繁杂任务
11.USART 实际用异步比较多
12.IIC、SPI 常用接口协议(用通用IO口模拟也没问题)
13.CAN 一般用于汽车领域
14.USB 可以做一个模拟鼠标,模拟U盘等设备
15.RTC STM32内部完成计时功能,可以接外部备用电池,即使掉电也能正常运行
16.CRC 一种数据的校验方式,用于判断数据的正确性,有这个外设的支持,做数据校验就更加方便
17.PWR 可以让芯片进入睡眠模式等状态,来达到省电的目的
18.BKP 当系统掉电时,仍可由备用电池保持数据,根据这个需要,完成一些特殊的功能
19.IWDG、WWDG 当单片机因为电磁干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
20.DAC 在IO口直接输出模拟电压
21.SDIO 可以读取SD卡
22.FSMC 可以用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
23.USBOTG 用OTG功能可以让STM32作为USB主机去读取其他USB设备
每个具体的芯片有哪些外设,还得看数据手册或者选型手册
可以分为四块(内核和3根总线;FLASH;DMA总线,其余外设小弟)
1.cortex-M3内核,引出了3根总线,DCode数据总线、ICode指令总线、System系统总线
DCode数据总线、ICode指令总线主要连接FLASH闪存,FLASH存储的是编写的程序,
ICode 加载程序指令的,DCode加载数据,比如常量和调试数据
System总线,连接到其他上面。
比如SRAM,用于存储程序运行时的变量数据。FSMC本课程芯片不会用到
AHB系统总线(先进高性能总线Advanced High bus) 挂载主要外设的,挂载最基本的,或者性能比较高的外设,比如复位和时钟控制这些最基本的电路、SDIO、两个桥接(接到APB1和APB2两个外设总线上)
APB(先进外设总线 Advanced Peripheral Bus)用于连接一般的外设。因为AHB和APB的总线协议、总线速度、还有数据传送格式的差异,所以中间需要加两个桥接,来完成数据的转换和缓存
性能:AHB>APB2>APB1
APB2一般和AHB同频率,都是72MHz,APB1一般是36MHz
所以APB2连接外设中稍微重要的部分,比如GPIO端口,外设的1号选手,比如UASRT1、SPI1、TIM1、TIM8(TIM8和TIM1一样,也是高级定时器)、ADC、EXTI、AFIO
APB1接次要一点的外设,还有外设的2345号选手,DAC、PWR、BKP等
使用的时候,个人感觉不到APB2和APB1的性能差异,只需要知道外设挂在哪个总线就可以了
DMA 可以看成内核CPU的小秘书,比如大量数据搬运的工作,让CPU来做太浪费时间,比如外设ADC模数转换,可配置成连续模式,比如1ms转换一次,转换完的数据必须转运出来,否则数据就会被覆盖,如果CPU来做,那么每1ms就要来转运数据,费时费力,影响CPU正常工作,而且这个活就是简单的数据搬运,没必要CPU来干,于是DMA来做。(像数据搬运这种简单反复要做的事情)。DMA通过DMA总线连接到总线矩阵上,拥有和CPU一样的总线控制权,用于访问外设小弟,当需要DMA搬运数据时,外设小弟就会通过请求线发送DMA请求。然后DMA获得总线控制权,访问并转运数据,整个过程不需要CPU参与,省下了CPU的时间来做其他的事情
拿到一个新的芯片时,需要着重看一下芯片的引脚定义。看完引脚定义,就大概知道芯片如何使用了
小黑脚1号引脚,逆时针依次排列。
FT能容忍5V,没有FT但需要接5V,就需要加装电平转换电路
主功能就是上电后默认的功能,一般和引脚名称相同。如果不同的话,引脚的实际功能是主功能而不是引脚名称的功能(优先主功能)
默认复用功能是IO口上同时连接的外设功能引脚,配置IO口时选择通用IO口还是复用功能
重定义功能:如果两个功能同时复用在了一个IO口上,而确实需要用到这两个功能的时候,那可以把其中一个复用功能重映射到其他端口上。前提是重定义功能的表里有对应的端口
I输入 O输出 S电源 I/O输入输出 FT容忍5V
1号引脚 VBAT 备用电池供电引脚,当系统电源断电时,备用电池可以给内部的RTC和BKP提供电源
2号引脚 IO口或者侵入检测或者RTC,IO口可以根据程序读取或者输出高低电平(最基本也是最常用的功能)
侵入检测可以用来做安全保障的功能(比如产品安全性比较高,可以在外壳加一些防拆的触点,然后接上电路到这个引脚,若有人强行拆开设备,那么触点断开,引脚的电平变化),就触发STM32的侵入信号,然后清空数据来保证安全。RTC的引脚可以用来输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
3、4号引脚 IO口或者接32.768KHz的RTC晶振 215,内部RTC经过2的15次方分频,就可以生成1秒的时间信号了
5、6号引脚 接系统的主晶振,一般是8MHz,然后芯片内有锁相环电路,可以对8MHz的频率进行倍频,最终产生72Mhz的频率,作为系统的主时钟
7号引脚 NRSR系统复位引脚,N代表低电平复位的
8、9号引脚 内部模拟部分的电源,比如ADC、RC震荡器等 VSS是负极,接GND,VDD是正极,接3.3V
10-19号引脚 都是IO口,其中PA0还兼具了WKUP(weak up)的功能,可以用于唤醒处于待机模式的STM32
20号引脚 IO口或者BOOT1引脚 BOOT用来配置启动模式的
推荐优先使用加粗的IO口,没有加粗的IO口可能需要进行配置,或者兼具其他功能,使用需要注意
21、22号引脚 IO口
23、 24号引脚 系统的主电源口 STM32内部采用分区供电的模式
25-33好引脚 IO口
34、37-40号引脚 IO口或者调试端口(调试程序和下载程序的)STM32支持SWD和JTAG两种调试方式。两根线SWDIO和SWCLK
JTAG需要5根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST(推荐使用SWD模式),PA15、PB3、PB4要配置才能成为IO口,否则默认不会是IO口
SW是ARM开发的,STlink是ST公司的,但STlink可以用到GD上
41-43、45-46都是IO口
44 BOOT0 BOOT用来配置启动模式的
3.7启动配置
指定程序开始运行的位置,一般情况下,程序都是在Flash程序存储器开始执行(BOOT0=0)
但是在某些情况下,我们也可以让程序在别的地方开始执行,用以完成特殊的功能
BOOT0=1,BOOT1=0时,串口下载用的,系统存储器存的就是STM32中的一段bootloader程序(BootLoader程序的作用,就是接收串口的数据,然后刷新到主闪存中,这样就可以使用串口下载程序了)(什么时候需要串口下载?如果把调试端口全部配置成了IO口,那就没有调试端口了,就要用到串口下载了)
BOOT0=BOOT1=1时,主要用来程序调试的,现阶段用的比较少,本套视频也不会用到
最小系统电路中,复位电路,用一个电容是因为从低到高的过程中,低电平持续一小段时间来保证单片机完成复位
例如第20号引脚,也就是说上电的瞬间是BOOT1的功能,第4个时钟过后,就是PB2的功能了
单片机的起振电容怎么算,晶振的
(复位脚要一个电容式因为:复位电路在上电的瞬间,电容是没有电的,电源通过电阻向电容开始充电,并且此时电容呈现短路状态,那NRST引脚就会产生低电平,电容逐渐充满电时,电容相当于断路,此时NRST被电阻上拉为高电平,上电瞬间波形就是先低电平,然后逐渐高电平,这个低电平就可以提供STM32的上电复位信号)(在我们看来,单片机就在上电的一瞬间就完成复位了)(还并联一个按键,提供手动复位的功能(一般设备上有一个小孔,当设备死机还不方便断电重启时,就可以拿针戳一下))
启动配置:用跳线帽充当开关。用拨码开关也可以,比插跳线帽还方便一点。
3.3V板子如果有供电可以不引出来,GND必须要引出来
来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。