ARM11以后,命名改为Cortext系列。
2.Cortex架构:Cortex-A:高性能应用处理器,如Symbian、Linux、WinCE、WindowsMobile。Cortex-R:专门针对实时、深度嵌入式解决方案,如高档轿车、军事国防应用。Cortex-M:专注于低成本嵌入式微控制器,相对低端。Cortex-M0:针对FPGACortex-M1:替代低成本MCUCortex-M3:占领高性能MCU市场Cortex-M4:主要针对数字信号处理3.Cortex-M3:高性能:哈佛结构+分支预算高集成度:高代码密度:Thumb2指令集内嵌NVIC中断低成本。Cortex-M3的产品:
STM32系列:意法半导体Stellatirs系列:LPC1000系列:AT91SAM3系列:Atmel4.STM32:STM32F103增加型系列:32位STM32F101基本型系列:32位
本系列使用开发板是 普中 STM32-F1 , 芯片是STM32 F103ZET6。
7.STM32程序开发的模式STM32有三种开发模式:
基于寄存器开发基于ST公司的库函数开发基于嵌入式操作系统开发二、keil 开发环境搭建1.安装Keil uVision5(MDK500)打开安装包,按提示操作:
安装完成,等待下载芯片信息:
2.创建Project选择菜单Project-New Project,输入study1
下面的选项钩选:CMSIS-CORE和 Device-Startup
点OK。
设置 Listings和 Output目录:
3.新增study1.c
int main(){ ;}
点编译按钮:
4.问题处理1. 缺少环境变量
.\output\study.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
处理方式:
建立环境变量:ARMCC5LIB 指向: C:\Keil\ARM\ARMCC\lib
2. 找不到SystemInit在使用MDK编译工程时出现了如下错误,test.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).`
定义一个空函数: SystemInit
void SystemInit(){}
找到本机的 Arm/Packs/ARM/CMSIS/版本号/CMSIS/Include,手工加入到C++的Include Paths里。
三、仿真器安装仿真器是免驱的,但我在虚拟机中插上需要重启虚拟机才行。
插上后在设置界面的Debug 可以找到仿真器。
四、建立 STM32 工程模板1. STM32 的固件库STM32的固件库中包含标准外设驱动、实例等,ST公司在2007年10月发布了V1.0版本。
下载地址:
https://www.st.com/zh/embedded-software/stsw-stm32054.html
这里下载固件库3.6版,文件夹命名一般这样的:STM32F10x_StdPeriph_Lib_V3.6.0
库文件目录结构如下:
_htmresc:ST公司的图标之类,不用管Libraries:驱动库的源代码与启动文件CMSIS:Cortex-M3内核自带的外设驱动代码和启动代码CM3 核心文件夹CoreSupport,即Cortex-M3内核自带外设的驱动程序core_cm3.ccore_cm3.hDeviceSupportSTSTM32F10xstartup:不同开发环境的启动代码文件夹arm:对应keil开发环境,均为汇编文件,内部多个文件分别对应不同的Flash容量startup_stm32f10...sgcc_ride7iarTrueSTUDIORelease_Notes.htmlstm32f10x.hsystem_stm32f10x.csystem_stm32f10x.hDocumentation 一些文档CMSIS debug support.htmlCMSIS_changes.htmLicense.docSTM32F10x_StdPeriph_Driver:芯片制造商在Cortex-M3内核上外加的外设驱动inc:include文件stm32f10x_adc.h 不同外设的头文件……src:源代码 ,上inc对应Release_Notes.htmlProjects:驱动实例和工程模板STM32F10x_StdPeriph_Template工程模板main.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.hUtilities:ST开发板相关例程Release_Notes.htmlstm32f10x_stdperiphlib_um.chm 帮助系统2. 拷贝文件典型的工程模板包含以下文件和文件夹:
Libraries:固件库里的同名文件夹,放外设驱动及启动代码。Output:编译输出文件夹Project:用户开发的程序源代码,一般包含下面内容:工程文件main.c:本文件及下面3个文件可以从工程模板拷贝过来stm32f10x_conf.h:外设头文件配置文件stm32f10x_it.c:中断函数源文件(涉及中断时使用)stm32f10x_it.h:中断函数头文件readme.txt这里实现一个简单的模板框架,使用如下几个文件:
放置文件夹结构:
3. 改分组文件夹如下图操作:
4. Keil 环境必要的配置配置要点:
Target页面下的外部时钟,这里设置为8.0MHzOutput页面下,钩选Create HEX FileC/C++页面下,设置Include PathsDebug选择自己使用的仿真器
设置如下:
5. 源程序示例/ 普中科技-------------------------------------------------------------------------------- 实 验 名 : 使用寄存器点亮一个LED 实验说明 : 操作寄存器控制D1指示灯闪烁 连接方式 : 注 意 : / #include "stm32f10x.h" typedef unsigned int u32; //类型重定义 unsigned int -- u32 void SystemInit(){} / 函 数 名 : delay 函数功能 : 延时函数,通过while循环占用CPU,达到延时功能 输 入 : i 输 出 : 无/void delay(u32 i){while(i--);} / 函 数 名 : main 函数功能 : 主函数 输 入 : 无 输 出 : 无/int main(){RCC_APB2ENR |= 1<<4;GPIOC_CRL &= ~( 0x0F<< (40));GPIOC_CRL |= (3<<40);GPIOC_BSRR=(1<<(16+0));while(1){GPIOC_BSRR=(1<<(16+0));delay(0xFFFFF);GPIOC_BSRR=(1<<(0));delay(0xFFFFF);}}
7. 查看 GPIOA 寄存器值
设置断点,运行到断点后可以在:Peripherals-System Viewer-GPIO 选择GPIOA查看值:
五、配置 vscode 开发环境安装vscode过程忽略。
1. 安装扩展c/c++ 扩展C/C++ Extension PackKeil Assistant2. 设置 Keil Assistant
3. 下载 mingw
MinGW - Minimalist GNU for Windows download | SourceForge.net
点击下载,安装软件包,等待下载完成。
点击Continue.
4. 配置mingw钩选:
点击: Installation->Apply change
点击 Apply->安装。
5. 配置环境变量把 MinGW\bin 加到系统变量的Path里。
6. Vscode打开和编译 keil 项目使用open proejct 打开keil的工程,在左侧找到 KEIL UVISION PROJECT。
鼠标移到 Target 1上,会出现编译、下载图标。
如果提示安装 .Net framework,按提示安装。
目前这个环境只能使用vscode实现开发、编译、下载,并不能进行单步调试。 后续章节再补充此操作。