前言
由于个人原因已经有好长时间没搞了,最近工作需要,但是拿起32基本上都忘记差不多了,接下来一段时间将急中学习一下STM32的基础知识。以前是学习的库函数版本,有一定的基础,因此这次入手准备直接从头开始学习寄存器版本的程序,有助于更加深的理解STM中对寄存器的操作。
重新拿出开发板,感到既熟悉又陌生,这篇博客先说一下学习准备,接下来的博客会更新后续实验。
学习方法
一、学习准备
2.1 C语言基础
学习STM32前C语言必须得过关,否则对于代码的理解和32的学习将会很难。
谭浩强的《C程序设计》第四版和第五版都行
2.2 开发环境的搭建
开发软件使用Keil uVision5
调试工具:JTAG、ST-LINK/V2
下载程序:可以直接使用调试工具下载,也可以使用串口下载,串口下载的时候需要用到串口助手
2.3 寄存器版本代码说明
掌握库函数的基本配置方法。了解寄存器底层配置过程,以便深入了解STM32芯片本质。
二、参考的资料(文档)
- 芯片的内核(最底层):CM3/CM4权威指南(由ARM提供)
- 芯片参考手册(功能寄存器特性描述):STM32F1/F4中文参考手册(由ST提供)
- 芯片数据手册(芯片电气参数及引脚说明):STM32F407ZGT6
- STM32F407开发指南—寄存器版本(这里使用的是正点原子的开发板)及其配套视频
- 开发板原理图:Explorer STM32F4_Vxx_SCH.pdf
ST官方资料下载地址:www.stmcu.org
三、学习资源(硬件)
这里使用的是正点原子的STM32F4系列的探索者开发板,这里将开发板硬件资源做一下简单介绍,其具体介绍再不完全 手册前两章有详细介绍。大家做好也看一下。

ALIENTEK探索者STM32F4开发板板载主要资源如下:
◆CPU:STM32F407ZGT6,LQFP144,FLASH:1024K=1M,SRAM:192K;
◆ 外扩SRAM:IS62WV51216,1M字节
◆ 外扩SPI FLASH:W25Q128,16M字节
◆2个状态指示灯(DS0:红色,DS1:绿色)
◆1个红外接收头, 并配备一款小巧的红外遥控器
◆1个EEPROM芯片,24C02,容量256字节
◆1个六轴(陀螺仪+加速度) 传感器芯片,MPU6050
◆1个高性能音频编解码芯片,WM8978
◆1个2.4G无线模块接口,支持NRF24L01无线模块
◆1路CAN接口,采用 TJA1050芯片
◆1路485接口,采用SP3485芯片
◆2路RS232串口(一公一母) 接口,采用SP3232芯片
◆1路单总线接口,支持 DS18B20/DHT11等单总线传感器
◆1个ATK模块接口, 支持ALIENTEK蓝牙/GPS模块
◆1个光敏传感器
◆1个标准的2.4/2.8/3.5/4.3/7寸LCD接口,支持电阻/电容触摸屏
◆1个摄像头模块接口
◆1个OLED模块接口
◆1个USB串口,可用于程序下载和代码调试(USMART调试)
◆1个USB SLAVE接口,用于USB从机通信
◆1个USB HOST(OTG)接口,用于USB主机通信
◆1个有源蜂鸣器
◆1个RS232/RS485选择接口
◆1个RS232/模块选择接口
◆1个CAN/USB选择接口
◆1个串口选择接口
◆1个SD卡接口(在板子背面)
◆1个百兆以太网接口(RJ45)
◆1个标准的JTAG/SWD调试下载口
◆1个录音头(MIC/咪头)
◆1路立体声音频输出接口
◆1路立体声录音输入接口
◆1路扬声器输出接口,可接1W左右小喇叭
◆1组多功能端口(DAC/ADC/PWM DAC/AUDIO IN/TPAD)
◆1个参考电压设置接口
◆1个直流电源输入接口(输入电压范围:DC6~16V)
◆1个启动模式选择配置接口
◆1个RTC后备电池座,并带电池
◆1个复位按钮,可用于复位MCU和LCD
◆4个功能按钮,其中KEY_UP(即WK_UP)兼具唤醒功能
◆1个电容触摸按键
◆1个电源开关,控制整个板的电源
◆ 独创的一键下载功能
◆ 除晶振占用的IO口外,其余所有IO口全部引出
STM32芯片学习内容
一、学习的内容
- 芯片的初步了解
STM32F407用的是Cortex-M4内核,Cortex-M4采用的是ARMv7-ME架构
Cortex-M4内核,增加浮点运算和增强的DSP处理指令
168MHz高速运行时210DMIPS的处理能力
32位定时器(M3是16位的定时器)
STM32家族:405.407.415.429.437
二、基本资源
- 基本外设:GPIO输入输出、外部中段、定时器(中断)、串口
- 基本外设接口:串口、SPI、I2C、ADC/DAC、WDG、FSMC、SDIO等
- 高级系统功能:UCOS、FATFS、EMWIN等
2.1 内核
32位 高性能ARM Cortex-M4处理器
时钟:168M 支持FPU(浮点运算)和DSP指令
2.2 IO口
STM32F4007ZGT6:144引脚 114个IO
大部分都支持5V(数据手册中FT的都支持,模拟通道不支持)
支持调试:SWD和JTAG,SWD只要2条数据线
2.3 存储容量
1024k flash 192 SRAM
2.4 时钟和电源管理
1.8v~3.6v电源和IO电压
上电/掉电复位、可编程的电压监控
强大的时钟系统
4~26M的外部高速晶振
内部16MHz的高速RC振荡器
内部32KHz低速RC振荡器,看门狗
内部锁相环(PLL,倍频),一般系统时钟都是外部或内部高速时钟经过PLL倍频后得到
外部低速32.768K的晶振,主要做RTC时钟源
2.5 低功耗
睡眠,停止和待机三种低功耗模式
可用电池为RTC和备份寄存器供电
2.6 AD、DA
3个12位AD[24个外部测量通道]
内部通道可用于内部温度测量
内置参考电压

2个12位DA
2.7 DMA
16个DMA通道,带FIFO和突发支持
支持外设:定时器,ADC,DAC,SDIO,I2S,SPI,I2C,USART
2.8 定时器
17个定时器
10个通用定时器(TIM2和TIM5是32位)、2个基本定时器、2个高级定时器、1个系统定时器、2个看门狗定时器
2.9 通信接口
17个通信接口
3个I2C接口、6个USART(串口)、3个SPI接口、2个CAN2.0接口、2个USB OTG、1个SDIO
总结
目前就先准备这么多,之后随着学习后面的学习博客也会随之更新。