【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED

目录

1 前提条件

2 在S32DS中基于S32K312新建一个工程

2.1 在PIN引脚配置界面中配置GPIO

2.2 适配配置生成后的代码

2.3 编译工程

3 使用SEGGER J-Link烧录调试程序

4 LED灯点亮后的效果

结尾


【S32K3_MCAL从入门到精通】合集:

S32K3_MCAL从入门到精通icon-default.png?t=N7T8https://blog.csdn.net/qfmzhu/category_12519033.html

1 前提条件

S32DS(S32 Design Studio for S32 Platform 3.5)中创建一个S32K3创建工程时,需要满足以下环境条件:

  • 安装一个S32DS product updates和packages(其中包含支持的S32K3系列芯片):S32 Design Studio Platform package 3.5.8

参考【S32K3环境搭建】-0.2-安装S32DS product updates和 packagesicon-default.png?t=N7T8https://blog.csdn.net/qfmzhu/article/details/134820284博文。

  • 安装一个实时驱动RTD(Real-Time Driver)S32K3 Real-Time Drivers Version 2.0.3

参考【S32K3环境搭建】-0.3-S32DS安装实时驱动RTD(Real-Time Driver)icon-default.png?t=N7T8https://blog.csdn.net/qfmzhu/article/details/134843314博文。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第1张图片

图1-1

2 在S32DS中基于S32K312新建一个工程

Project Explorer中,鼠标右键,在上下文中依次选择New -- > S32DS Application Project

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第2张图片

图2-1

在弹出的Create a S32 Design Studio Project对话框中(图2-2),配置以下参数后,单击Next

  • Project name:为该工程命名S32K312_LED_Example
  • Processors:在S32K3系列芯片中选择一个型号,这里以S32K312为例;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第3张图片

图2-2

在弹出的New S32DS Project for S32K312对话框中(图2-3),配置以下参数后,单击Finish。新项目生成。它包含一个sample accumulator application。可以在不做任何更改的情况下构建和调试该项目。在此基础项目中添加您的内容。

  • Debugger:有以下选项GDB PEMicro Debugging InterfaceSegger Debugging InterfaceVDK Debugging Interface。这里选择Segger Debugging Interface,使用Segger J-Link烧录和调试。
  • Library:有以下选项NewLib()NewLib Nano()。这里选择NewLib。Newlib 与 Newlib-Nano 的区别包括:

a)Newlib-Nano 对大小进行了优化;

b)在 Newlib-Nano 中重新实现了 printf 和 scanf 系列例程,以消除对floating-point浮点输入/输出处理代码的直接依赖。需要使用这些函数处理浮点数值的项目现在必须在链接过程中明确请求该功能,如上所述;

c)Newlib-Nano 中的 printf 和 scanf 系列例程只支持 C89 标准中定义的转换说明符。这在小内存占用和全功能格式化输入/输出之间实现了良好的平衡;

d)Newlib-Nano 删除了 printf/scanf 系列例程(iprintf/iscanf 等)多余的纯整数实现;

e)在 Newlib-Nano 中,退出时只刷新未写入的缓冲数据。打开的数据流不会关闭;

f)在 Newlib-Nano 中,重新实现了动态内存分配器;

  • I/O Support:有以下选项No I/ODebugger ConsoleReal-time printf with ITM。这里选择No I/O。
  • FPU Support:有以下选项Toolchain DefaultSoftware: No FPU (-mfloat-abi=soft)Hardware : -mfloat-abi=hardHardware : -mfloat-abi=softfp。这里选择Toolchain Default。
  • Language:编程使用的语言,这里默认C。
  • SDKs:选择一个RTD中,对应芯片的驱动,见图2-4。

请注意,根据所选处理器的不同,调试器支持不同的选项。此外,如果支持 S32 配置工具,还会有一个选项。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第4张图片

图2-3

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第5张图片

图2-4

新的工程就创建成功,图2-5。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第6张图片

图2-5

2.1 在PIN引脚配置界面中配置GPIO

双击“.mex” ,或者在菜单栏找到“Open S32 Configuration Tools”,并点击“PINs”,进入引脚配置。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第7张图片

图2-6

在引脚配置界面中,勾选PTB10,接着在弹出的对话框中,选择SIUL2:gpio,42

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第8张图片

图2-6

然后在弹出的“需要指明方向”,选择Output

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第9张图片

图2-7

在图2-8中,单击完成后,在路由详情中(图2-9),会看到PIN的配置信息:

a)标签标识符:为每个PIN配置一个字符串名称,用于API函数的传参。

b)Slew Rate:寄存器位MSCR_SRC

c)Output Buffer Enable:寄存器位MSCR_OBE

d)Pad keep enable:寄存器位MSCR_PKE

e)Driver Strength Field:寄存器位MSCR_DSE

f)Initial Value:寄存器位GPDO_PDO

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第10张图片

图2-8

图2-9

接着单击右上角的“外设”按钮,见图2-10;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第11张图片

图2-10

组件中,单击Drivers的右侧,添加Siul2_Dio外设驱动模块;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第12张图片

图2-11

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第13张图片

图2-12

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第14张图片

图2-13

最后单击“更新源代码”生成Pin配置代码。在图2-15中,可以选择需要更新的文件;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第15张图片

图2-14

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第16张图片

图2-15

等待右下角Update Code结束。

2.2 适配配置生成后的代码

在main.c文件中,手动增加以下代码,见图2-16:

增加头文件:

#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"

调用Port初始化函数:

Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);

调用Pin设置函数:此函数可切换参数引脚中列出的输出引脚("1 "位)。与 "0 "对应的引脚不受影响。

Siul2_Dio_Ip_TogglePins(LED_1_PORT, (1 << LED_1_PIN));

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第17张图片

图2-16

在Siul2_Port_Ip_Cfg.h中,有相关的配置生成的宏定义。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第18张图片

图2-17

“PTA_H_HALF”以及PTB10的PIN设为10的含义如下:

S32K3xx Reference Manual》附件《S32K344 IOMUX.xlsx》表格中。IO按照A、B、C、D、E、F、G分成7组,每组有0~31个,而H和L分别代表高16位和低16位,所以PTB10实际属于低16位的Pin 10。

在Siul2_Port_Ip.c中,有Siul2_Port_Ip_Init函数的原型。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第19张图片

图2-18

在Siul2_Dio_Ip.c中,有Siul2_Dio_Ip_TogglePins函数的原型。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第20张图片

图2-19

注意:第2.1-2.2章节,部分内容参考了博文“[S32K3从0入门]S32DS工程创建及烧录”。

2.3 编译工程

Project Explorer选中S32K312_LED_Example工程后,依次单击Dashboard中的Clear和Build,编译该工程。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第21张图片

图2-20

3 使用SEGGER J-Link烧录调试程序

在菜单栏中,依次选择Debug下拉箭头 -- > Debug Configuration

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第22张图片

图3-1

选中S32K312_LED_Example_Debug_FLASH_Segger,并确认Main子页的设置;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第23张图片

图3-2

接着确认Debugger子页的设置后,单击Debug按钮,开始烧录调试程序;

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第24张图片

图3-3

弹出Confirm Perspective Switch对话框,单击Switch按钮。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第25张图片

图3-4

单击Resume按钮运行程序。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第26张图片

图3-5

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第27张图片

图3-6

4 LED灯点亮后的效果

PTB10外设原理图

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第28张图片

图4-1

LED小灯被成功点亮。

【S32DS RTD实战】-1.1-S32K3创建工程并控制一个GPIO点亮一个LED_第29张图片

图4-2

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

你可能感兴趣的:(嵌入式硬件,单片机,开发语言)