公司网站建设的市场需求,安阳区号,win10 电脑做网站服务器吗,网页建设多少钱一、Keil MDK-ARM简介及安装 Keil MDK#xff0c;也称MDK-ARM#xff0c;Realview MDK #xff08;Microcontroller Development Kit#xff09;等。目前Keil MDK 由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备…一、Keil MDK-ARM简介及安装 Keil MDK也称MDK-ARMRealview MDK Microcontroller Development Kit等。目前Keil MDK 由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计不仅易学易用而且功能强大能够满足大多数苛刻的嵌入式应用。 MDK-ARM有四个可用版本分别是MDK-Lite、MDK-Basic、MDK-Standard、 MDK-Professional。所有版本均提供一个完善的C / C开发环境其中MDK-Professional还包含大量的中间库。
Keil MDK-ARM功能特点 完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件。 行业领先的ARM C/C编译工具链 确定的Keil RTX 小封装实时操作系统带源码 μVision5 IDE集成开发环境调试器和仿真环境 TCP/IP网络套件提供多种的协议和各种应用 为带图形用户接口的嵌入式系统提供了完善的GUI库支持 ULINKpro可实时分析运行中的应用程序且能记录Cortex-M指令的每一次执行 大量的项目例程帮助你快速熟悉MDK-ARM强大的内置特征 符合CMSIS (Cortex微控制器软件接口标准)
Keil MDK-ARM获取
https://www.keil.com/demo/eval/arm.htm#/DOWNLOAD
Keil MDK-ARM安装 安装MDK-523.exe 这keil5软件的安装包不要有中文路径 安装Keil.STM32F0XX_DFP.1.4.0.pack 这是STM32F0设备安装包 运行KEIL_Lic(1).exe 破解keil 以管理员权限运行keil破解 注keil安装过程可参考 DAY1-ARM体系结构概述\实验手册\WIFI-COTEXM0实验手册 第三章 开发环境搭建 安装 ST_LINK 烧写工具 ST_LINK 是 STM32 芯片的仿真器这里介绍烧写工具的安装通过这个软件操作ST_LINK 将.hex 文件烧写到芯片上。此软件用于为 M0 烧写 bootloader 文件。我们在 keil中编译好的代码可以使用它们本身进行下载。 软件路径DAY2-STM32开发环境搭建\安装软件包\ST-Link驱动及工具\STM32 ST-LINK Utility_v3.1.0 注ST_lINK安装过程可参考 DAY1-ARM体系结构概述\实验手册\WIFI-COTEXM0实验手册 3.6节 二、STM32CubeMX简介及安装
STM32CubeMX简介 直观的选择STM32微控制器 微控制器图形化配置 自动处理引脚冲突 动态设置确定的时钟树 可以动态确定参数设置的外围和中间件模式和初始化 功耗预测 C代码工程生成器覆盖了STM32微控制器初始化编译软件如IARKEILGCC可以独立使用作为Eclipse插件使用
TM32CubeMX获取 官网地址 http://www.st.com/en/development-tools/stm32cubemx.html STM32CubeMX安装 安装JAVA运行环境JavaSetup8u151.exe 解压stm32cubemx.zip安装SetupSTM32CubeMX-4.22.0.exe最好不要有中文路径 解压stm32cube_fw_f0_v180.zip到STM32CubeMX的安装路径中 注安装过程可参考 DAY1-ARM体系结构概述\实验手册\WIFI-COTEXM0实验手册 第三章 开发环境搭建 STM32CubeMX——创建工程 点击New Project创建工程 把工程名称和路径选择好 然后点击ok 然后开始生成对应的工程源代码导出一个Keil5的工程。 击Open Project后就会调用Keil5来打开这个工程。
我们用CubeMX和Keil5联合对STM32进行开发CubeMX主要是前期的配置过程。 三、STM32储存器映射
3.1 Cortex-M0存储器映射 注被控单元的FLASHRAM和AHB到APB的桥即片上外设这些功能部件共同排列在一个 4GB 的地址空间内。我们在编程的时候可以通过他们的地址找到他们然后来操作他们
存储器本身没有地址给存储器分配地址的过程叫存储器映射 3.2 STM32F0存储器映射 STM32F05x 存储器映像和外设寄存器编址 在中文参考手册的2.2中可以找到 3.3 寄存器的访问方式
以GPIOA寄存器组为例、如何读写ODR寄存器 以知GPIOA的起始地址为0x48000000 各寄存器的偏移地址如下 MODER; /*Address offset: 0x00 */ OTYPER; /*Address offset: 0x04 */ OSPEEDR; /*Address offset: 0x08 */ PUPDR; /*Address offset: 0x0C */ IDR; /*Address offset: 0x10 */ ODR; /*Address offset: 0x14 */ BSRR; /*Address offset: 0x18 */ LCKR; /*Address offset: 0x1C */
如何访问寄存器——第一种方式
对地址进行宏定义
#define GPIOA_BASE ( (unsigned int ) 0x48000000 )
#define GPIOA_ODR ( GPIOA_BASE 0x14 )
读操作
val *(unsigned int *) GPIOA_ODR ;
写操作
*(unsigned int *) GPIOA_ODR val ;
改进
#define GPIOA_ODR *(unsigned int *) ( GPIOA_BASE 0x14 )
val GPIOA_ODR ; //读
GPIOA_ODR val ; //写
如何访问外设寄存器——第二种方式 用结构体封装寄存器 用上面的方法去定义地址还是稍显繁琐、根据我们每一类外设对应的寄存器组地址都是连续增长的特点我们引入 C 语言中的结构体语法对寄存器进行封装、
typedef struct {uint32_t MODER; /*Address offset: 0x00 */uint32_t OTYPER; /*Address offset: 0x04 */uint32_t OSPEEDR; /*Address offset: 0x08 */uint32_t PUPDR; /*Address offset: 0x0C */uint32_t IDR; /*Address offset: 0x10 */uint32_t ODR; /*Address offset: 0x14 */uint32_t BSRR; /*Address offset: 0x18 */uint32_t LCKR; /*Address offset: 0x1C */} GPIO_TypeDef;#define GPIOA_BASE ( (unsigned int ) 0x48000000 )#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
注我们访问GPIOA的控制寄存器组时、直接使用宏定义好 GPIO_TypeDef 类型的指针而且指针指向 GPIOA端口的首地址这样我们直接用宏GPIOA访问改外设的任意一个寄存器
GPIOA-MODER 0x20 ;
GPIOA-OSPEEDR 0x16 ; 四、STM32启动文件分析
STM32F0启动模式 注Cortex-M0 的程序映像通常是从地址 0x00000000 开始的、系统复位后处理器首先读取向量表中的前两个字8 个字节第一个字存入 MSP第二个字为复位向量它表示程序执行的起始地址复位处理 根据启动模式的不同用户闪存、系统闪存和SRAM都 可以映射到0x0的低端地址 我们的板子boot0直接接地因此启动区域为flash启动
C语言程序内存排布 注 栈的作用是用于局部变量函数调用函数形参等的开销 堆主要用来动态内存的分配
启动文件startup_stm32f051.s分析 下方课件中