在MDK-Keil中开发S32K144

news2025/1/17 13:56:10

对于NXP的S32K1xx系列MCU,前面已经介绍过,官方有专门支持该系列MCU开发的IDE工具——S32DS,这个工具还有对应的代码生成配置工具,而且也是官方推荐使用的工具。

S32DS开发环境是基于Eclipse改写的,熟悉Eclipse的话可以很快上手。但是很多人使用MDK-Keil软件更多,所以介绍下怎么使用MDK-Keil环境来开发S32K144.

1. 安装S32K144 Pack包

我们首先要安装S32K1xx的Pack包。Pack包可以到Keil的官网进行下载,也可以通过菜单栏Pack Installer 界面进行下载。

S32K1xx的pack包最新版本是1.5.0,下载官网:

https://www.keil.arm.com/packs/s32_sdk_dfp-keil/boards/

然后点击下载即可。

在这里插入图片描述

下载完成之后,双击pack包进行安装:

在这里插入图片描述

安装路径默认即可。因为我已经安装过了,所以提示是否替换。

2. 文件准备

在新建S32K144的Keil工程之前,我们需要先把所必需的文件准备好。这些文件无非就是S32K1xx系列MCU的SDK库文件,所以我们首先要去官网下载了S32K1xx的SDK。

可以通过下面的官网链接下载,目前最新的版本是 4.0.3 .

https://www.nxp.com.cn/design/software/development-software/s32-sdk/s32-software-development-kit-for-s32k1:S32SDK-ARMK1

得到SDK之后,我们把所需的文件复制到我们新建工程的目录下面,准备后续使用。

在这里插入图片描述

在前面一篇文章中,已经详细介绍了S32K1xx的SDK框架和各个文件夹的作用了。这里不多介绍。

我们把 platform / rtos 这两个文件夹复制到我们要新建Keil工程的目录下,platform 的内容其实就是NXP提供的 S32K1xx 开发的外设驱动库函数,还要启动文件,链接文件等等。rtos目录则是关于通信的外设驱动会使用到信号量、互斥量等内容,然后这个文件有裸机实现的接口,也有基于FreeRTOS进行二次封装实现的。

复制那两个文件夹过来之后,如下:

在这里插入图片描述

3. 创建S32K144的Keil应用工程

1)新建工程

1、选择菜单 Project->New Uvision Project… 新建工程

在这里插入图片描述

2、选择新建工程的保存路径

在这里插入图片描述

3、选择S32K型号,我使用的开发板是NXP的S32K144-EVB开发板,对应的芯片型号就是 S32K144UAxxxLLx ,根据自己手上的硬件选择对应的型号就行。

在这里插入图片描述

最后点击OK即可完成新建一个工程了。

2)新建工程目录结构

工程的目录结构因人而异,按照自己的习惯来就好。我自己新建的工程目录结构如下:

在这里插入图片描述

目前这些目录还没有加入SDK外设驱动相关的文件。

3)添加文件

给前面新建的工程目录结构,添加相关的文件。

在这里插入图片描述

新建一个基本的工程,所需要添加的SDK库文件有:

  • 启动代码:包括 startup.c 和 startup_S32K144.S 的汇编文件。
  • S32K1xx Peripheral Driver,就是外设驱动代码。基本的工程需要包括以下模块的文件。
    • clock:系统时钟初始化配置相关代码
    • edma:这个是dma外设,其他模块需要用到dma的接口函数
    • interrupt:中断相关API接口函数
    • lpuart:这个是串口外设驱动,我们打印调试需要用到
    • pins:GPIO外设驱动
  • system_S32K144.c 文件
  • OSIF接口文件,这个文件是一些通信外设驱动文件需要引导的操作系统接口API,如信号量,互斥量等。
  • main.c :用户主函数

我们把上面所需的这些文件,添加到对应的每个工程的目录文件夹中。

4)工程配置

我们点击魔术棒的按钮,然后对工程进行基本的配置。主要就是配置下头文件的路径,还要一些常用的设置就行了。注意的是,我们需要选择AC6版本的编译器,因为NXP最新的SDK选择只支持AC6版本的编译器了。

1、勾选使用 Use MicroLIB ,这样我们可以使用printf函数进行打印调试。

在这里插入图片描述

2、配置头文件路径

在这里插入图片描述

3、汇编编译器选项添加 START_FROM_FLASH 这个宏定义。

在这里插入图片描述

4、选择 .sct 散列文件。

NXP的SDK,里面的代码用到了大量的自定义的外部符号了,而这些符号都是在散列文件中定义的,所以我们需要使用NXP自己写的散列文件。而不能使用MDK-Keil自动生成的散列文件。

在这里插入图片描述

5、调试选项的配置

调试器选择自己对应的调试器即可,我使用的是J-Link调试器。

在这里插入图片描述

最终,使用MDK-Keil开发S32K144的模板工程就新建好了。

然后我们编译这个工程的结果如下:

在这里插入图片描述

提示说有2个警告,都是说这个版本不支持 xxx 什么的符号,我目前还不了解怎么去除这2个警告,先不管他,后面有机会再了解。

后续我就根据这个模板工程,进行S32K144的开发学习了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/997927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python使用百度AipOCR来实现图像文字识别

上篇文字讲到了可以截屏手机模拟器上的界面并传回电脑上,文章链接 python将手机模拟器截屏并发送至电脑上_小小爬虾的博客-CSDN博客 传回来以后,就可以识别出图片中的文字内容了。 我使用的是Python3.10.4+百度的AipOCR库实现图像文字识别…

利用Scrum敏捷工具管理敏捷产品迭代Sprint Backlog

​什么是Sprint Backlog? Sprint Backlog是Scrum的主要工件之一。在Scrum中,团队按照迭代的方式工作,每个迭代称为一个Sprint。在Sprint开始之前,PO会准备好产品Backlog,准备好的产品Backlog应该是经过梳理、估算和优…

systemserver的inputdispatcher直接产生CANCEL事件原理分析-讨厌的android触摸面试题

背景回顾: 上一个blog已经重点讲解了app层面自己产生的Cancel触摸事件,大概产生的原理如下: 上一个blog地址:https://blog.csdn.net/learnframework/article/details/124086882 即可以看出来,在服务端systemserver其实…

国家信息中心举办“数字政府建设暨数字安全技术”研讨会:海云安提出数字政府软件供应链安全解决方案

近日,由国家信息中心主办,复旦大学研究院承办的“数字政府建设暨数字安全技术研讨会”在义乌顺利召开。国家信息中心信息与网络安全部副主任禄凯,复旦大学党委常委、宣传部部长陈玉刚,义乌市委常委、常务副市长喻新贵为会议致辞。…

三、C#—变量,表达式,运算符(3)

🌻🌻 目录 一、变量1.1 变量1.2 使用变量的步骤1.3 变量的声明1.4 变量的命名规则1.5 变量的初始化1.6 变量初始化的三种方法1.7 变量的作用域1.8 变量使用实例1.9 变量常见错误 二、C#数据类型2.1 数据类型2.2 值类型2.2.1 值类型直接存储值2.2.2 简单类…

【rust/egui】(十)使用painter绘制一些图形—connections

说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 绘制连接 在上一节我们使用painter绘制…

《深度学习初探:使用TensorFlow和Keras构建你的第一个神经网络》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

GCP之Google Cloud Infrastructure

Google Cloud 的物理网络是如何连接的? Google Cloud 分为 regions,regions 又分为 zones。 region 是一个地理区域,其中一个 VM 到另一个 VM 的往返时间 (RTT) 通常小于 1毫秒;zone 是 region 中的部署区…

canvas基础笔记

一、简介 Canvas是HTML5中的一个元素,它提供了一个可以使用JavaScript绘制图形的区域。它提供了一个强大的绘图API,可以用于创建各种图形,包括线条、矩形、圆形、文本等 Canvas 是 HTML5 中的一个元素,用于绘制图形、动画和图像。…

架构核心技术之微服务架构

小熊学Java:https://www.javaxiaobear.cn/,文末有免费资源 本文我们来学习微服务的架构设计 主要包括如下内容。 单体系统的困难:编译部署困难、数据库连接耗尽、服务复用困难、新增业务困难。 微服务框架:Dubbo 和 Spring Clou…

sdkman 的安装配置与 sdk 管理

sdkman 的安装配置与 sdk 管理 记录一下项目使用的工具,目前环境的管理有以下几个: sdkmanpyenvnvm 这里主要讲一下 sdkman,我们项目是通过 sdkman 进行 java 和 maven 的管理,这个写的挺简单的,加上一个自己写的自…

unipush2.0实现APP消息推送(2)云函数多个方法的创建与使用

问题:上篇文章我们已经介绍到了unipush2.0消息推送的实现思路,但是遇到一个问题就是如何在一个云函数里写多个方法供传统服务端调用? 这样做的目的:这样传统服务端就可以调用一个云函数url路径传递不同的参数标识走不同的方法了 …

uni-app--》基于小程序开发的电商平台项目实战(一)

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:uni-app 🚲座右铭:人生亦可燃烧,亦可腐败&#xf…

《AI一键生成抖音商品种草文案》让你秒变带货王!

在这个数字化的时代,我们的生活被各种应用所包围,其中,抖音作为一款短视频分享平台,已经成为了我们生活中不可或缺的一部分。然而,作为一名抖音创作者,你是否曾经遇到过这样的困扰:在创作商品种…

Linux C : select简介和epoll 实现

目录 一、基础知识 二、select 模型服务流程 二、select 模式的缺点。 三、poll 概要 四、epoll 服务端实现流程 1.epoll_create: 2.epoll_ctl 3.epoll_wait 五、epoll示例代码实现 1.epoll实现服务端 2.客户端采用tcp进行访问 一、基础知识 首先要知道&…

flink的几种常见的执行模式

背景 在运行flink时,我们经常会有几种不同的执行模式,比如在IDE中启动时,通过提交到YARN上,还有通过Kebernates启动时,本文就来记录一下这几种模式 flink的几种执行模式 flink嵌入式模式: 这是一种我们在…

基于keras中Lenet对于mnist的处理

文章目录 MNIST导入必要的包加载数据可视化数据集查看数据集的分布开始训练画出loss图画出accuracy图 使用数据外的图来测试图片可视化转化灰度图的可视化可视化卷积层的特征图第一层卷积 conv1 和 pool1第二层卷积 conv2 和 pool2 MNIST MNIST(Modified National …

从零开始的PICO教程(4)--- UI界面绘制与响应事件

从零开始的PICO教程(4)— UI界面绘制与响应事件 文章目录 从零开始的PICO教程(4)--- UI界面绘制与响应事件一、前言1、大纲2、教程示例 二、具体步骤1、PICO VR环境配置2、XR的UI Canvas画布创建与调整(1)C…

【雷达原理】雷达信号级建模与仿真

目录 前言一、LFMCW信号概述1.1 优点1.2 缺点 二、LFMCW信号模型2.1 发射信号模型2.2 接收信号模型2.3 信号混频 三、MATLAB仿真3.1 仿真结果3.2 代码 四、参考文献 前言 雷达信号形式多种多样,按照雷达的体制进行分类,有脉冲雷达和连续波雷达。脉冲雷达…

C#程序到底从哪里开始看,从Main函数开始,那么Main函数是什么?

视觉人机器视觉粉丝问我,拿到自己公司得架构,问我,C#程序到底从哪里看,从Main函数开始,那么Main函数是什么? Main()函数 Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。也就是说,在执行过程开始时,会执行Main()函数,在Main()函数执行完毕时,执行过…