目录
1 前提条件
2 在S32DS中基于S32K312新建一个工程
2.1 在PIN引脚配置界面中配置GPIO
2.2 适配配置生成后的代码
2.3 编译工程
3 使用SEGGER J-Link烧录调试程序
4 LED灯点亮后的效果
结尾
【S32K3_MCAL从入门到精通】合集:
S32K3_MCAL从入门到精通https://blog.csdn.net/qfmzhu/category_12519033.html
在S32DS(S32 Design Studio for S32 Platform 3.5)中创建一个S32K3创建工程时,需要满足以下环境条件:
参考【S32K3环境搭建】-0.2-安装S32DS product updates和 packageshttps://blog.csdn.net/qfmzhu/article/details/134820284博文。
参考【S32K3环境搭建】-0.3-S32DS安装实时驱动RTD(Real-Time Driver)https://blog.csdn.net/qfmzhu/article/details/134843314博文。
图1-1
在Project Explorer中,鼠标右键,在上下文中依次选择New -- > S32DS Application Project;
图2-1
在弹出的Create a S32 Design Studio Project对话框中(图2-2),配置以下参数后,单击Next。
图2-2
在弹出的New S32DS Project for S32K312对话框中(图2-3),配置以下参数后,单击Finish。新项目生成。它包含一个sample accumulator application。可以在不做任何更改的情况下构建和调试该项目。在此基础项目中添加您的内容。
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 中,重新实现了动态内存分配器;
请注意,根据所选处理器的不同,调试器支持不同的选项。此外,如果支持 S32 配置工具,还会有一个选项。
图2-3
图2-4
新的工程就创建成功,图2-5。
图2-5
双击“.mex” ,或者在菜单栏找到“Open S32 Configuration Tools”,并点击“PINs”,进入引脚配置。
图2-6
在引脚配置界面中,勾选PTB10,接着在弹出的对话框中,选择SIUL2:gpio,42;
图2-6
然后在弹出的“需要指明方向”,选择Output;
图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
图2-8
图2-9
接着单击右上角的“外设”按钮,见图2-10;
图2-10
在组件中,单击Drivers的右侧,添加Siul2_Dio外设驱动模块;
图2-11
图2-12
图2-13
最后单击“更新源代码”生成Pin配置代码。在图2-15中,可以选择需要更新的文件;
图2-14
图2-15
等待右下角Update Code结束。
在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));
图2-16
在Siul2_Port_Ip_Cfg.h中,有相关的配置生成的宏定义。
图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函数的原型。
图2-18
在Siul2_Dio_Ip.c中,有Siul2_Dio_Ip_TogglePins函数的原型。
图2-19
注意:第2.1-2.2章节,部分内容参考了博文“[S32K3从0入门]S32DS工程创建及烧录”。
在Project Explorer选中S32K312_LED_Example工程后,依次单击Dashboard中的Clear和Build,编译该工程。
图2-20
在菜单栏中,依次选择Debug下拉箭头 -- > Debug Configuration;
图3-1
选中S32K312_LED_Example_Debug_FLASH_Segger,并确认Main子页的设置;
图3-2
接着确认Debugger子页的设置后,单击Debug按钮,开始烧录调试程序;
图3-3
弹出Confirm Perspective Switch对话框,单击Switch按钮。
图3-4
单击Resume按钮运行程序。
图3-5
图3-6
PTB10外设原理图:
图4-1
LED小灯被成功点亮。
图4-2
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。