本笔记为参加 《百问网-七天物联网智能家居》Day2 记录
1. 上手思路
1.1 官网资料
芯片原厂官网:https://www.st.com/content/st_com/zh.html
数据手册(Product Spec)
- st官网搜索stm32f103c8t6
- 点击stm32f103c8t6
- 点击文件
- 其中 《产品规格》就是我们常说的《数据手册》
- 《参考手册》包含所有芯片的外设描述
1.2 配套资料
通常一款芯片,原厂会基于一款芯片设计开发板和配套的示例程序,原厂设计的开发板,我们叫做公板。价格昂贵,不好购买。
- 点击 工具与软件
- 其中boards为st官方开发板
也可使用基于stm32fc8t6芯片设计的其他开发板,例如本次使用的 百问网 stm32mini
需要获取该板子的 《原理图》 及配套程序
1.3 分析硬件
最小系统
用最少的电路组成单片机可以工作的系统
查看原理图
如何查看 工作电压
- 《数据手册》中电源部分
- 5.1.6 Power supply scheme 中为电路描述,VDD和VSS为芯片供电
- 5.3.1 General operating conditions中描述电压范围
如何查看晶振选型
- 查看《数据手册》
- 5.3.6 External clock source characteristics 中
晶振典型值 8MHz,电路中需加两个电容,范围为5~25pF
2. 寄存器
2.1 外设和寄存器
2.2 存储结构
0x0800 0000 ~ 0x0801 FFFF (Flash memory)存放下载代码
0x2000 0000 ~ 0x4000 0000 代码运行中产生的临时数据变量
0x4000 0000 ~ 0x4002 3400 所有外设
0xE000 0000 ~ 0xE010 0000 M3内部外设的寄存器地址(中断向量表,系统滴答时钟)
举例GPIOA寄存器
控制GPIO引脚输出对应电平:GPIOA + GPIOx_ODR = 0x4000 0000 + 0x0C 中的bit1位
3. 开发
3.1 单片机开发方式
-
使用汇编操作寄存器
执行效率高
编写难度大、移植性差 -
使用C语言操作寄存器
执行效率适中
编写效率低、移植性差 -
使用库开发
标准库执行效率稍低
编写效率高、移植性稍低
已停止更新HAL库
执行效率稍低
编写效率高、移植性好
官方推荐,接口名字基本上已HAL开头
4. 创建工程
4.1 STM32 生态
- STM32 CubeMX 生成代码
- STM32 CubeIDE 代码编辑和编译
- STM32 CubeProgrammer 烧写
- STM32 CubeMonitor-电源
STM32 CubeMonitor-射频
STM32 CubeMonitor-UCPD
监控
4.2 创建工程
- 自定义创建工程
定制化程度高,干净简练
前期配置难度高,需要一定经验
- STM32CubeMX创建工程
上手难度低,可视化方便
需要按指定规则编写代码