STM32学习笔记小结

  • 格式:pdf
  • 大小:1.51 MB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32学习笔记

目录

STM32学习笔记 (1)

一、入门 (2)

目标->实战项目 (2)

STM32学习方法 (3)

ARM简介 (4)

二、外设功能模块 (5)

GPIO原理与工作模式 (5)

串行通信 (6)

硬件下载与调试 (6)

Cortex-M3复用功能(AF)和重映射功能 (6)

Systick的使用 (7)

通用定时器 (7)

SPI与数码管 (7)

I2C通信 (8)

NVIC中断 (8)

PWM基础 (9)

RCC内部结构与原理 (9)

ADC模数转换 (10)

内部温度传感器 (10)

窗口看门狗 (10)

USB应用 (11)

三、问题 (11)

在线调试 (12)

一、入门

STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,主要包括STM32F101“基本型”系列、STM32F103“增强型”系列、STM32F105、STM32F107“互联型”系列。STM32微控制器满足嵌入式开发低功耗和高性

能的要求,并且拥有简单易上手的固件函数库,避免了传统ARM单片机开发操作寄存

器的模式,所以十分受欢迎,应用广泛。

作者只学过一些51单片机的基础,就直接上手STM32,边学边用。该篇笔记也

是随意的记录一下,要想系统的学习一下,个人认为资料手册(data sheet)、参考手册(Reference Manual)和用户手册(固件函数库)三个文档再有开发板实际操作,完全足够。熟练掌握以上内容,触类旁通,成为STM32开发的高手指日可待。

目标->实战项目

STM32学习方法

开发环境(MDK/IAR)寄存器or固件库软件仿真&开发板硬件学习难度

建立不受库版本限制的工程项目:

1.准备好文件(Startup Code、Lib、User)

2.建立工程不添加Startup Code

3.工程管理添加需要的库文件、自定义文件

4.编译链接

ARM简介

ARM7衍生出全新的Cortex架构,三管齐下:

Cortex-A:高性能应用处理器。(越来越接近电脑)

Cortex-R:专门针对实时、深度嵌入式的解决方案。(又快又实时)

Cortex-M:专注低成本嵌入式微控制器。(好用又便宜)

Cortex-M中低端的芯片

Cortex-M0:针对FPGA应用Cortex-M1:替代低成本MCU Cortex-M3:占领高性能MCU 市场

Cortex-M3特点:高性能(哈佛结构+分支预测)、高集成度(单芯片)、高代码密度(Thumb2指令集)、内嵌NVIC中断(响应速度快)、低成本(最便宜的不到1美元)。

Cortex-M3处理器产品:STM32系列(瑞士意法半导体ST)、Stellaris 系列(美TI)、LPC1000系列(荷兰NXP)、AT91SAM3系列(美Atmel)

STM32103VCT6引脚:

80*GPIO或(外设)引脚复用20*(电源相关、复位、晶振)

ATmega128是Atmel公司的8位系列单片机的最高配置的一款单片机。

ARM流水线指令处理:

二、外设功能模块

STM32库函数

库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向

上为用户提供配置寄存器的接口。

灵活使用、驾轻就熟。

GPIO原理与工作模式

1.设置GPIO引脚的工作模式

2.引脚位运算: 寄存器BSRR/BRR

位绑定:位n 映射到内存地址 a if a=0x01 低地址为 1 则n =1

运算高效(替代读-修改-写)

可绑定区域SRAM 0x2000 0000 ~ 0x200f ffff 1M空间

位绑定公式:AliasAddr = 0x2200 0000 +((A-0x2000 0000)*8 +n)*4 n=(0 ~ 31)

=0x2200 0000 +(A – 0x2000 0000)*32 + 4*n

片上外设0x4000 0000 ~ 0x400f ffff 1M

位绑定公式:AliasAddr = 0x4200 0000 +((A-0x4000 0000)*8 +n)*4

=0x4200 0000 +(A – 0x4000 0000)*32 + 4*n

位绑定操作:

位绑定公式:

位绑定编程:#define BitBand(Addr,BitNum) *((volatile unsigned long

*)((Addr&0xF0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2)))

串行通信

74LS164芯片实现串转并的功能:18 仿真通信、逻辑分析仪

异步串行通信:

协议内容:1起始位2数据位(8、9奇偶校验) 3停止位(1、1.5、2周期)4波特率设置

串行异步收发转RS232(高电平),最远传输十几米。RS485最远3000米,最大速率1Mbps,噪声干扰好。

数据发送过程:1、CR1使能UE位。2、定义字长M 3。3、CR2设置编程停止位STOP。*4、配置DMA寄存器(多缓冲)5、CR1发送使能TE。6、BRR寄存器设置波特率。7、写数据到DR寄存器。

数据接收过程类似。

串口编程:

1、打开时钟RCC,引脚设置:Rx浮空输入Tx 推挽输出

2、将USART3的RX、TX重映射到PC10、PC11 ,USART3配置。

3、USART_SendData( USART3 , 0xf0);

硬件下载与调试

1、STM32芯片的内部存储结构

2、FLASH下载与调试设置

3、RAM下载与调试设

FLASH调试(0x0800 0000)只能烧写1000次。RAM调试(0x2000 0000)

芯片唯一UID地址:0x1FFF F7E8 – 0x1FFF F7F4 96bit/8 = 12 Byte

ID_num[i] = *(u8 *) ( 0x1FFF 7E9 + i) i->12

Printf(“%x” , ID_num[i]);

Cortex-M3复用功能(AF)和重映射功能

复用功能配置(AFIO_MAPR 复用重映射和调试I/O配置寄存器)

GPIO_PinRemapConfig(选择重映射的管脚,重映射的新状态)

重映射优点:1、改善硬件设计2、额外增加资源

UART-Printf重新定向

Int fputc(int ch , FILE *f)

{

//ch送到串口

USART_SendData(USART1 , ch);

//等待发送完毕

While(USART_GetFlagStatus( USART1 , USART_FLAG_TC) == RESET );

//返回ch

Return(ch);