STM32 开发环境搭建
STM32 偶尔用一下子,但总是环境搭建搭建三四天,代码开发5分钟,备忘。
系统环境
Amd64 处理器,64位 win10 专业版系统
烧录程序
- 安装 ST-LINKV2+USB+driver1.0+for+Windows8,+32+and+64+bits(stlink 驱动程序)
- Stlink 与单片机开发板连接,stlink 连接电脑,单片机开发板通电
- 运行 STM32 ST-LINK Utility.exe
- 点击 target->connect,成功读取单片机数据
- 点击 setings 设置 SWG/connect under reset
- 点击 File->open file 打开 test.hex
- 点击 Target->program verify 烧录新的程序,运行成功
IDE
- 下载keiluvision5(MDK526) https://www.7down.com/soft/222421.html
- 安装与破解 https://www.7down.com/article/144157.html
a. 双击“mdk526.exe”开始安装
b. 输入任意Name等信息
c. 安装完成后,点击“finish”
d. 双击运行桌面自动生成的“Keil uVision5”快捷方式,点击“File”,选择“License Management”,进入安装密钥。
e. 此时打开解压文件中的“keygen.exe”注册机,将注册界面的“CID”复制到注册机中,然后点击“Target”修改为"ARM",点击Generate,生成注册码
f. 将注册码复制到注册界面,点击“AddLIC”,出现如下界面说明破解完成。
g. 进入 pack installer,device-STMicroelectronics-STM32F103RC,下载对应的 pack,可以打开shadowsocks 提速(实操中貌似用处不大)
参数配置与编译
- 下载标准外设库 STM32F10x_StdPeriph_Lib
- 新建project DEMO_STM32F10x,设备选择 STM32F103RC
- 工程内部分组:
a. CORE 核心,从 STM32F10x_StdPeriph_Lib 的 Libraries\CMSIS\CM3 中获得
b. HARDWARE 外设驱动
c. OBJ 编译输出
d. STM32F10x_FWLib 标准外设库,从 STM32F10x_StdPeriph_Lib 的Libraries\STM32F10x_StdPeriph_Driver中获得
e. SYSTEM 内部功能驱动
f. USER 业务逻辑相关 - 编译设置project->options for target->c/c++
a. Define 添加 STM32F10X_HD,USE_STDPERIPH_DRIVER
b. Include path 添加 所有相关头文件的目录 - 输出设置
a. 更改编译输出的路径 select folder for objects
b. 选择 create hex file - 从测试用例中添加 SYSTEM文件夹和main.c
- 编译遇到两个错误:
a. stm32f10x_type.h(23): error: #256: invalid redeclaration of type name “s32”
b. …\SYSTEM\sys\sys.c(75): error: #136: struct “” has no field “IPR” (NVIC->IPR[IPRADDR]|= temp<<IPROFFSET; //设置响应优先级和抢断优先级) - 错误的原因和解决:
a. invalid redeclaration 是因为从测试用例中添加的SYSTEM是比较旧的工程,其中stm32f10x_map.h/stm32f10x_type.h 和新的头文件stm32f10x.h有冲突,stm32f10x.h包含前面两个头文件,把它们替换掉即可。
b. (NVIC_Type *)类型的NVIC 中没有IPR变量,有IP变量用于中断优先级设置,修改即可。 - 解决乱码问题,Edit – Configuration-Encoding 选择 GB2312 即可
参考文档
https://blog.youkuaiyun.com/ybhuangfugui/article/details/51510482
https://www.jianshu.com/p/01acf59a97a3