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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv