STM32

STM32F103C8T6是一款基于ARMCortex-M3内核的微控制器,拥有64KFlash和20KSRAM,具备丰富的GPIO、ADC、定时器和串口资源。还包括嵌套向量中断控制器NVIC,支持ISP和IAP编程。其GPIO可配置为多种模式,适用于各种输入输出应用。
摘要由CSDN通过智能技术生成

STM32F103C8T6单片机简介

内核Cortex-m3
Flash64K * 8bit
SRAM20K * 8bit
GPIO37个GPIO,分别为PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1
ADC2个12bit ADC合计12路通道,
外部通道:PA0到PA7+PB0到PB1,
内部通道:温度传感器通道ADC_Channel_16和内部参考电压通道ADC_Channel_17
Timers①4个16bit定时器/计数器(通用定时器),分别为TIM2、TIM3、TIM4、TIM5
定时计数,PWM输出,输入捕获,输出比较
高级定时器,分别位TIM1、TIM8.带死区控制盒紧急刹车,可应用于PWM电机控制
基本定时器,分别位TIM6、TIM7.为通用定时器提供时间基准,主要应用于驱动DAC(数模转换器)
②2个看门狗定时器(独立看门狗IWDG、窗口看门狗WWDG)
③1个24bit向下计数的滴答定时器systick(最大的使命就是定时产生异常请求,这种周期性的异常请求可以作为系统的时间基准;操作系统都需要这种“滴答”来推动任务和时间的管理)
工作电压、温度2V~3.6V、-40°C ~ 85°C
通信串口2*IIC,2 *SPI(串行外设接口),3*USART,1*CAN
系统时钟内部8MHz时钟HSI最高可倍频到64MHz,外部8MHz时钟HSE最高可倍频到72MHz

ARM Cortex-M3处理器系统的主要模块包括:
1.处理器内核(Cortex-M3 Core)
2.嵌套向量中断器NVIC(Cortex-M3所有的中断机制都由NVIC实现,支持中断嵌套,允许通过提供优先级提前对某个中断进行处理)
3.总线矩阵(通过它可以让数据在不同总线中并行传送)
4.存储器保护单元MPU(把存储器分成一些区域,并分别给予保护)
5.系统调试组件和调度端口
6.唤醒中断控制器WIC

ARM内核(采用ARMv7-M3框架)
结构主要特性:
1.采用Thumb-2指令集架构(ISA)的子集;
2.采用哈佛处理器架构;
3.采用三级流水线+分支预测;
4.可实现32位单周期乘法;
5.可实现2~12周期硬件除法;
6.具有Thumb状态和调试状态;
7.具有处理模式和线程模式;
8.可实现ISR的低延迟进入和退出;
9.具有可中断-继续的LDM/STM,PUSH/POP指令;
10.具有ARMv6类型BE/LE(字节不变大端/小端)支持;
11.可实现ARMv6非对齐访问;

嵌套向量中断控制器NVIC
嵌套向量中断控制器(NVIC)是ARM Cortex-M3是处理器中一个完整的部分。ARM Cortex-M3的所有中断机制都由NVIC实现。NVIC可以被高度配置,为处理器提供出色的中断处理能力。
NVIC支持中断嵌套,允许通过提高中断优先级对某个中断进行提前处理。它还支持中断的动态优先级重置。优先级的值可以在运行期间通过软件进行修改。正在处理的中断会防止进一步被激活,知道中断服务程序完成,所以再改变它们的优先级同时,也避免了意外重新进入中断的风险。
在背对背中断情况(即一次中断处理完成后紧接着又产生一次中断)下,ARM Cortex-M3处理器使用末尾连锁(tail-chaining)技术简化了激活的和未决的中断之间的切换。末尾连锁技术缩短了连续的堆栈弹出压入操作,实现了延迟的降低。
NVIC集成了24我位系统嘀嗒定时器(SysTick)。它是一个递减计数的计数器,能够定时产生中断,提供理想的时钟来驱动实时操作系统或其他预定的任务。

Flash
Flash 是一种非易失性存储器,其结构由主存储器块、系统存储器、OTP 区域和选项字节组成。 主存储器块被分为不同大小的扇区,包括 4 个 16 KB 的扇区、1 个 64 KB 的扇区和 7 个 128 KB 的扇区。这些扇区可被擦除和编程,用于存储应用程序和数据。 系统存储器可以在系统启动时自主加载,用于执行初始化和配置操作。这个存储器通常包含 bootloader、初始化代码和配置数据。 OTP 区域是一次性可编程的区域,可以用来存储用户数据。该区域还有 16 个额外字节,用于锁定对应的 OTP 数据块,以保护其不被意外擦除或编程。 选项字节包含配置数据,用于设置读写保护、BOR 级别、软件/硬件看门狗以及器件处于待机或停止模式下的复位。这些选项可以被编程,并在器件复位时加载。Flash 存储器是许多嵌入式系统中重要的组成部分,可以存储数据、程序和配置信息,并支持快速读写操作。
根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoader,然后锁死,用户是无法改变这个区域的。 选项字节存储芯片的配置信息及对主存储块的保护信息。

关于ISP与IAP
ISP(In System Programming)在系统编程,是指直接在目标电路板上对芯片进行编程,一般需要一个自举程序(BootLoader)来执行。ISP也有叫ICP(In Circuit Programming)、在电路编程、在线编程。 IAP(In Application Programming)在应用中编程,是指最终产品出厂后,由最终用户在使用中对用户程序部分进行编程,实现在线升级。IAP要求将程序分成两部分:引导程序、用户程序。引导程序总是不变的。IAP也有叫在程序中编程。 ISP与IAP的区别在于,ISP一般是对芯片整片重新编程,用的是芯片厂的自举程序。而IAP只是更新程序的一部分,用的是电器厂开发的IAP引导程序。综合来看,ISP受到的限制更多,而IAP由于是自己开发的程序,更换程序的时候更容易操作。

GPIO
(通用输入输出端口general porpose intput output)可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。

  1. 电源管脚: 引脚图中的 VDD、VSS、VREF+、VREF-、VSSA、VDDA 等都属于电源引脚。
  2. 晶振管脚:引脚图中的 PC14、PC15 和 OSC_IN、OSC_OUT 都属于晶振引脚,不过它们还可以作为普通引脚使用。
  3. 复位管脚: 引脚图中的 NRST 属于复位引脚,不做其他功能使用。
  4. 下载引脚:引脚图中的 PA13、PA14、PA15、PB3 和 PB4 属于 JTAG 或SW 下载引脚。不过它们还可以作为普通引脚或者特殊功能使用,具体的功能可以查看芯片数据手册,里面都会有附加功能说明。当然,STM32 的串口功能引脚也是可以作为下载引脚使用。
  5. T BOOT 引脚:引脚图中的 BOOT0 和 PB2(BOOT1)属于 BOOT 引脚,PB2 还可以作为普通管脚使用。在 STM32 启动中会有模式选择,其中就是依靠着 BOOT0和 BOOT1 的电平来决定。
  6. GPIO管脚:引脚图中的 PA、PB、PC、PD 等均属于 GPIO 引脚。从引脚图可以看出,GPIO 占用了 STM32 芯片大部分的引脚。并且每一个端口都有 16 个引脚,比如 PA 端口,它有 PA0-PA15。其他的 PB、PC 等端口是一样的。

GPIO工作模式
1.输入模式(模拟、上拉、下拉、浮空)
在输入模式时,施密特触发器打开,输出被禁止。
可通过输入数据寄存器GPIOx_IDR 读取 I/O 状态。
输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。
浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以使用这个模式。
模拟输入则用于 ADC 采集。
2.输出模式(推挽 / 开漏)
在输出模式中,推挽模式时双 MOS 管以推挽方式工作,输出数据寄存器GPIOx_ODR 可控制 I/O 输出高低电平。
开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O 输出高阻态或低电平。
输出速度可配置,有2MHz\25MHz\50MHz 的选项。此处的输出速度即 I/O 支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。
在输出模式时,施密特触发器是打开的,即输入可用,通过输入数据寄存器 GPIOx_IDR 可读取 I/O 的实际状态。
3.复用功能(推挽 / 开漏)
复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。
4.模拟输入输出(上下拉无影响)
模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉也被禁止。其它外设通过模拟通道进行输入输出。通过对 GPIO 寄存器写入不同的参数,就可以改变 GPIO 的应用模式,再强调一下,要了解具体寄存器时一定要查阅《STM32F1xx 参考手册》中对应外设的寄存器说明。在 GPIO 外设中,通过设置“端口配置寄存器 GPIOx_CRL 和 GPIOx_CRH”可配置 GPIO 的工作模式和输出速度。CRH 控制端口的高八位,CRL 控制端口的低八位。
STM32的GPIO端口有以下特点:
①通用输入/输出:最基本的功能,可以驱动LED、产生PWM、驱动蜂鸣器等
②单独的位设置或位清除:可以使程序简单可靠。
③所以端口都有外部中断能力:所有端口都可以使用外部中断,为了适应外部中断线,端口必须配置成输入模式。
④复用功能(AF):复用功能的端口兼有IO功能等。复位期间和刚复位后,复用功能未开启,IO端口被配置成付款输入模式。
⑤软件重新映射IO复用功能:为了使不同器件封装的外设IO功能的数量达到最优,可以把一些复用功能重新映射到其它引脚上。这可以通过软件配置相应的寄存器来完成
⑥GPIO锁定机制:当一个端口位上执行锁定(LOCK)程序,在下一次复位之前,将不能在更改端口位的配置

SRAM
静态随机存取存储器(Static Random Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面存储的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所存储的数据就需要周期性地更新。然而,当电力供应停止,SRAM存储的数据会消失(被称为易失性存储器)

SRAM的基本单有3种状态:电路处于空闲(standby)、读取 (reading) 与写入(writing) 。SRAM的读取或写入模式必须分别具有可读(readability) 与写入稳定(write stability) 。
空闲
如果字线没有被选为高电平,那么作为控制用的M5与M6两个晶体管处于断路,把基本单元与位线隔离。由M1 - M4组成的两个反相器继续保持其状态,只要保持与高、低电平的连接。
读取
假定储存的内容为1,即在Q处的电平为高。读取周期开始时,两条位线预充值为逻辑1,随后字线WL充高电平,使得两个访问控制晶体管M5与Mg通路。第二步是保存在Q的值与位线BL的预充值相同,所以BL保持逻辑1,而Q与BL的预充值不同,使得BL经由M1与M5放电而变成逻辑0 (即Q的高电平使得晶体管M1通路)。 在位线BL-侧,晶体管M4与M6通路,把位线连接到Vop所代表的逻辑1 (M4作为P沟道场效应管,于栅极加了Q的低电平而M4通路)。如果储存的内容为0,相反的电路状态将会使BL为1而BL为0。只需要BL与BL有一个很小的电位差,读取的放大电路将会辨识出哪条位线是1哪条是0。敏感度越高,读取速度越快。
写入
写入周期开始时,把要写入的状态加载到位线。如果要写入0,则设置BL为1且BL为0。随后字线WL加载为高电平,位线的状态被加载SRAM的基本单元。这是通过位线输入驱动能力设计的比基本单元相对较弱的晶体管更为强壮,使得位线状态可以覆盖基本单元交叉耦合的反相器的以前的状态。

Timers
SysTick定时器:系统嘀嗒定时器是一个基本的倒计时定时器,用于在每隔一点的时间产生一个中断,即使是系统在睡眠模式下也能工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值