STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器
STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器
使用指针读指定地址下的存储器:
uint16_t Data = *((__IO uint16_t *)(0x08000000));
使用指针写指定地址下的存储器:
*((__IO uint16_t *)(0x08000000)) = 0x1234;
其中:
#define __IO volatile
### STM32F103C8T6 入门教学知识点详解
#### STM32 系列概述
- **定义与特点**:STM32是意法半导体(STMicroelectronics,简称ST)公司推出的一系列基于ARM Cortex-M内核的32位微控制器。这些微控制器以其强大的性能、丰富的片上资源以及较低的功耗,在嵌入式系统领域占据着重要地位。
- **应用场景**:广泛应用于智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等多个领域。
#### STM32F103C8T6 特性
- **系列归属**:该型号属于STM32F1系列,即主流系列。
- **内核类型**:基于ARM Cortex-M3内核。
- **最高工作频率**:72MHz。
- **内存容量**:
- RAM:20KB (SRAM)。
- ROM:64KB (Flash)。
- **供电范围**:2.0V~3.6V,推荐使用3.3V供电。
- **封装形式**:LQFP48。
#### 片上资源与外设
- **NVIC**:嵌套向量中断控制器,负责管理中断优先级与中断响应。
- **CAN**:控制器局域网络通信接口。
- **SysTick**:系统滴答定时器,提供精确的时间基准。
- **USB**:支持USB通信功能。
- **RCC**:复位与时钟控制系统,控制微控制器的时钟源及其分配。
- **RTC**:实时时钟模块,用于维持日期时间信息。
- **GPIO**:通用输入输出接口,支持多种工作模式。
- **CRC**:循环冗余校验模块,用于数据完整性验证。
- **AFIO**:高级复用功能接口,用于配置外设与GPIO的映射关系。
- **PWR**:电源管理系统。
- **EXTI**:外部中断接口,支持快速响应外部事件。
- **BKP**:备份寄存器,用于保存关键数据。
- **TIM**:通用定时器模块,支持多种计数模式。
- **IWDG**:独立看门狗定时器,用于系统监控。
- **ADC**:模数转换器,实现模拟信号到数字信号的转换。
- **WWDG**:窗口看门狗定时器,提供额外的安全机制。
- **DMA**:直接内存访问控制器,提高数据传输效率。
- **DAC**:数模转换器,用于生成模拟信号。
- **USART**:通用同步/异步收发器,支持串行通信。
- **SDIO**:SD卡接口,支持高速数据交换。
- **I2C**:两线式串行总线接口,适用于短距离通信。
- **FSMC**:灵活的静态存储器控制器,支持扩展外部存储器。
- **SPI**:串行外设接口,适用于高速串行通信。
- **USB OTG**:USB On-The-Go,支持USB主机与设备模式切换。
#### 存储器操作
- **读操作**:使用指针访问特定地址的存储器,例如读取地址`0x08000000`中的16位数据。
```c
uint16_t Data = *((__IO uint16_t *)(0x08000000));
```
- **写操作**:同样通过指针方式修改特定地址的存储器值。
```c
*((__IO uint16_t *)(0x08000000)) = 0x1234;
```
#### 开发环境与工具链
- **硬件平台**:STM32最小系统板+面包板,适用于初学者进行实验与学习。
- **软件工具**:Keil5 MDK,集成开发环境,用于编写、编译和调试STM32程序。
- **安装步骤**:安装Keil5 MDK软件,下载并安装相应的器件支持包;完成软件注册后,还需安装STLINK驱动与USB转串口驱动。
- **工程创建**:创建工程文件夹,并在Keil5中新建项目;根据项目需求划分文件夹与工程分组;设置工程选项,包括包含路径、预处理宏定义等。
- **调试器选择**:在调试选项中选择合适的调试器,设置Flash下载选项。
#### GPIO 概述
- **定义**:通用输入输出接口,用于实现微控制器与外部世界的交互。
- **特性**:
- 支持8种不同的输入输出模式。
- 引脚电平支持0V至3.3V,部分引脚可承受5V电压。
- 输出模式下可控制引脚输出高低电平,驱动LED、控制蜂鸣器等。
- 输入模式下可用于读取按键状态、接收外部信号等。
- **结构**:每个GPIO端口包含一组寄存器,如数据输出寄存器、数据输入寄存器等,以及对应的引脚驱动器。
#### 总结
STM32F103C8T6作为一款经典的嵌入式微控制器,凭借其强大的性能、丰富的资源以及较低的功耗,在多个领域都有广泛应用。通过了解其基本特性和开发流程,可以帮助开发者更好地利用这一平台实现各种嵌入式应用。