stm32f10x

嵌入式stm32


定义:应用 为中心,以计算机技术 为基础,软硬件 可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统


特点:

  1. 系统内核小
  2. 专用性强
  3. 系统精简
  4. 高实时性
  5. 多任务的操作系统
  6. 专门的开发工具和环境

ST公司的STM32系列芯片采用了 Cortex-M3内核(哈佛结构),其分为两个系列:

  • STM32F101系列(基本型)为标准型,运行频率为36MHz
  • STM32F103系列(增强型)为标准型,运行频率为72MHz

固件库函数及其头文件的命名规则:

系统、源程序文件和头文件命名都以“stm32f10x_”作为开头


ARM Cortex系列:

  • Cortex-A—高性能应用处理器
  • Cortex-R—实时应用的高性能内核
  • Cortex-M—低成本的微控制器内核

Cortex-M3是一个32位处理器内核,内部的数据路径,寄存器,存储器接口是32位,采用了哈佛 结构


常用关键字

ifdef:

条件编译 :其中一部分内容只在满足一定条件才进行编译

可以防止双重定义的错误

endif:

与ifdef成对使用

static:

  • 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变
  • 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问
  • 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用

inline:

内联函数:为了解决一些频繁调用的小函数大量消耗栈空间的问题,加快程序执行速度

typedef:

声明新的类型名来替代原有的类型名,增加编程效率

extern

  • 可以在一个文件中引用另一个文件中定义的变量或者函数

RCC(复位和时钟控制器)时钟树


  • AHB:HCLK=SYSCLK=72M
  • APB1:HCLK1=HCLK/2=36M(低速) USART2/3/4/5
  • APB2:HCLK2=HCLK=72M(高速) GPIO,USART1,SPI1

  • PLL:锁相环时钟,两个时钟源:HSE,HSI/2

  • HSE:高速外部时钟信号,最常用8M无源晶振,可以不分频或2分频

  • HSI:高速内部时钟信号

  • LSE:低速外部时钟信号

  • LSI:低速内部时钟信号


当STM32复位后,HSI将被选为系统时钟


定时器(8个)16位

  • 基本定时器:TIM6,TIM7 只能向上计数只能定时无外部IO接口
  • 通用定时器:TIM2,TIM3,TIM4,TIM5 上下计数,可以定时,输出比较、输入捕捉,每个定时器有4个外部IO
  • 高级定时器:TIM1,TIM8 上下计数,可以定时,输出比较、输入捕捉,每个定时器有8个外部IO 互补输出信号

STM32通用定时器TIM的16位计数器可以采用三种方式工作:

  • 向上计数模式
  • 向下计数模式
  • 中央对齐模式

USART(通用同步/异步串行接收/发送器)

USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器

既可以工作在全双工模式下,也可工作在半双工 模式下,既可以工作在异步模式下,也可工作在同步模式下,支持使用 DMA


波特率(B/s)计算:

Tx/Rx=fpLCK/(16*USARTDIV)

fpLCK是USART时钟频率

USARTDIV存放在波特率寄存器USART_BRR的无符号定点数

DIV_Mantissa (16进制)寄存器定义USARTDIV的整数 部分;DIV_Fraction (16进制)寄存器定义USARTDIV小数 部分

例:

115200=72000000/16*USARTDIV

USARTDIV=39.0625

DIV_Fraction=0.0625*16=1=0x01,DIV_Mantissa=39=0x27,USART_BRR=0x271


DMA(直接存储器存取)

是单片机的一个外设,主要功能是用来搬数据不需要占用CPU


DMA1: 7个通道

DMA2: 5个通道(只存在于大容量单片机中)


每个DMA通道有3个事件标志,分别是:

  • DMA传输过半
  • DMA传输完成
  • DMA传输出错

传输方向:

  1. 从存储器到外设
  2. 从外设到存储器
  3. 从存储器到存储器

LCD液晶

完整的显示屏由:

  • 液晶显示面板
  • 电容触摸面板
  • PCB底板

液晶与CPU通讯的通信协议主要有:

  • SPI
  • 8080
  • RGB

STM 32F1 系列芯片没有集成


GPIO

每个I/O端口位可以自由的编程,尽管I/O端口寄存器必须以32位字方式访问


STM32系列微处理器最多可以有7组GPIO端口 ,每组端口有16个IO接口,每个端口有7个 寄存器:

  • 2个32位配置寄存器(GPIOx_CRH,GPIOx_CRL)
  • 2个32位数据寄存器(GPIOx_IDR(输入),GPIOx_ODR(输出))
  • 1个32位置位/复位寄存器(GPIOx_BSRR)
  • 1个复位寄存器(GPIOx_BRR)
  • 1个32位锁定寄存器(GPIOx_LCKR)

引脚模式配置

  1. 浮空输入
  2. 上拉输入
  3. 下拉输入
  4. 模拟输入
  5. 开漏输出
  6. 推挽输出
  7. 复用推挽输出
  8. 复用开漏输出

引脚输出速度

  • 2MHz
  • 10MHz
  • 50MHz

端口重映射:把管脚的外设功能映射到另一个管脚

端口复用:不同的功能对应同一管脚


常用库函数:

  • GPIO_Init:初始化外设GPIOX寄存器
  • GPIO_ReadInputDataBit:读取指定端口管脚的输入
  • GPIO_ReadInputData:读取指定的GPIO端口输入
  • GPIO_SetBits:设置指定的数据端口位
  • GPIO_ResetBits:清除指定的数据端口位
  • GPIO_WriteBit:设置或清除指定的数据端口位
  • GPIO_Write:向指定的GPIO端口写入数据

EXTI(外部中断/事件控制器)

支持多达19个中断/事件请求,每个输入线都可以被独立的屏蔽,挂起寄存器保持着状态线的中断要求


4位中断优先级,16个可编程的优先等级


STM32的所有端口都有外部中断能力。当使用 外部中断功能时,相应的引脚必须配置成 输入 模式


中断向量表由启动文件startup_stm32f10x_hd.s建立,在编写中服函数时,需要从中断向量表中查找中服函数名


例:NVIC_PriorityGroup_0:先占优先级0位,从优先级4位


中断触发方式:

  • EXTI_Trigger_Falling:
  • EXTI_Trigger_Rising:
  • EXTI_Trigger_Rising_Falling:

SRAM,DRAM存储原理

SRAM(静态随机存储器): 只要保持通电,里面的数据就可以保持住, 靠双稳态触发器记忆信息

DRAM(动态随机存储器): 需要定期刷新操作,靠MOS电路中的栅极电容来记忆信息的,比SRAM集成度高、功耗低,成本低


常用名词解释

USART:

通用同步/异步串行接收/发送器

I2C:

内部集成电路

SPI:

串行通信接口

SDIO:

安全数字输入输出接口

FSMC:

灵活的静态存储控制器

I2S:

集成电路内置音频总线

ADC:

模拟数字转换器

GPIO:

通用输入输出

EEPROM:

带电可擦可编程只读存储器

DCMI:

数字摄像头接口

OLED:

有机发光二极管

LQFP:

四方扁平式封装技术

LFBGA:

球栅阵列封装

VDD/VSS:

电源电压(单极器件)

电路公共接地端电压或电源负极

VREF+/VREF-:

基准电压正负端

posted @ 2022-06-07 19:01  原语  阅读(1091)  评论(0编辑  收藏  举报