LV.23 D2 开发环境搭建及平台介绍 学习笔记

2024-02-17 10:20

本文主要是介绍LV.23 D2 开发环境搭建及平台介绍 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Keil MDK-ARM简介及安装

        Keil MDK,也称MDK-ARM,Realview 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微控制器初始化编译软件,如IAR,KEIL,GCC可以独立使用,作为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存储器映射

        注:被控单元的FLASH,RAM和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分析 (下方课件中)

 

这篇关于LV.23 D2 开发环境搭建及平台介绍 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717477

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads