【S32K3驱动配置】-1.1-GPIO配置及其应用-点亮LED灯(基于SDK)

news2024/11/25 18:33:27

目录共10页精讲,手把手教你S32K3从入门到精通

实现的软件架构:基于Drivers层(以往的SDK)

前期准备工作:

1 创建一个FREERTOS工程

2 点亮评估板S32K312EVB-Q172中D13 LED灯

2.1 S32K312EVB-Q172原理图中D13 LED外设摘录

2.2 MCU Pin的GPIO配置

2.3 举例:如何使用驱动

结尾


实现的软件架构:基于Drivers层(以往的SDK)

前期准备工作

评估板: NXP S32K312EVB-Q172通用开发板  S32K312EVB-Q172通用开发板 | NXP 半导体

芯片封装PackageS32K312_172HDQFP

开发&编译环境: S32 Design Studio for S32 Platform 3.5  S32 Design Studio | NXP 半导体

RTD(Real-Time Driver实时驱动): S32K3_S32M27x Real-Time Drivers AUTOSAR R21-11 Version 4.0.0 & SW32K3 FreeRTOS 10.6.0 version 4.0.0  实时驱动(RTD) | NXP 半导体

1 创建一个FREERTOS工程

RTD(Real-Time Driver实时驱动)版本:

S32K3_S32M27x Real-Time Drivers AUTOSAR R21-11 Version 4.0.0

SW32K3 FreeRTOS 10.6.0 version 4.0.0

参考博文《【S32DS RTD实战】-1.4-基于S32K3创建配置FreeRTOS工程-控制GPIO点亮LED_sw32k3_freertos-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qfmzhu/article/details/135142529》,配置一个FREERTOS工程。

2 点亮评估板S32K312EVB-Q172中D13 LED灯

2.1 S32K312EVB-Q172原理图中D13 LED外设摘录

D13 LED灯与MCU Pin的映射关系:

PTA29 :RGBLED0_RED

PTA30 :RGBLED0_GREEN

PTA31 :RGBLED0_BLUE

2.2 MCU Pin的GPIO配置

引脚视图中,将PTA29PTA29PTA31都配置为GPIO:Output,Initial Value都是LOW,并给这3个Pin添加标签:RGBLED0_RED,RGBLED0_GREEN,RGBLED0_BLUE。

外设视图中,在Siul2_Port -- > PortConfigSet -- > PortContainer -- > PortPin路径下,添加3个Pin的配置:

PortPin_PTA29_RGBLED0_RED

PortPin_PTA30_RGBLED0_GREEN

PortPin_PTA31_RGBLED0_BLUE

注意:

PortPin Mscr中填入Pin编号即可。

该Pin必须在引脚视图中已配置。

PortPin Mscr编号规则:

PTA的起始编号是0 * 32 = 0,PTAn对应Pin的编号为0 + n;

PTB的起始编号是1 * 32 = 32,PTBn对应Pin的编号为32 + n;

PTC的起始编号是2 * 32 = 64,PTCn对应Pin的编号为64 + n;

PTD的起始编号是3 * 32 = 96,PTDn对应Pin的编号为96 + n;

PTE的起始编号是4 * 32 = 128,PTEn对应Pin的编号为128 + n;

上述配置完成后,点击“更新代码”,生成S32K3的驱动代码。

2.3 举例:如何使用驱动

在FreeRTOS工程里的LEDTask任务函数中,调用API Siul2_Dio_Ip_SetPinsSiul2_Dio_Ip_ClearPins,间隔1秒分别点亮PTA29_RGBLED0_RED,PTA30_RGBLED0_GREEN,PTA31_RGBLED0_BLUE灯。

附录:main.c源码

/******************************************************************************
 *                                                                            *
 *   FreeRTOS sample application for RTD on S32 platforms                     *
 *                                                                            *
 *   Copyright 2023 NXP                                                       *
 *                                                                            *
 ******************************************************************************/

/* Including necessary configuration files. */
#include "Clock_Ip.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"

#define main_TASK_PRIORITY                ( tskIDLE_PRIORITY + 2 )

SemaphoreHandle_t sem_handle;


/**
* @brief        SendTask is used to give the semaphore
* @details      SendTask give the semaphore every 1 second
*/
void LEDTask( void *pvParameters )
{
    (void)pvParameters;
    uint8 LED_Switch_State = 0;

    for( ;; )
    {
        if(LED_Switch_State == 0)
        {
        	LED_Switch_State = 1;

        	Siul2_Dio_Ip_SetPins(RGBLED0_RED_PORT,1 << RGBLED0_RED_PIN);
        	Siul2_Dio_Ip_ClearPins(RGBLED0_GREEN_PORT,1 << RGBLED0_GREEN_PIN);
        	Siul2_Dio_Ip_ClearPins(RGBLED0_BLUE_PORT,1 << RGBLED0_BLUE_PIN);
        }
        else if(LED_Switch_State == 1)
        {
        	LED_Switch_State = 2;

        	Siul2_Dio_Ip_ClearPins(RGBLED0_RED_PORT,1 << RGBLED0_RED_PIN);
        	Siul2_Dio_Ip_SetPins(RGBLED0_GREEN_PORT,1 << RGBLED0_GREEN_PIN);
        	Siul2_Dio_Ip_ClearPins(RGBLED0_BLUE_PORT,1 << RGBLED0_BLUE_PIN);
        }
        else
        {
        	LED_Switch_State = 0;

        	Siul2_Dio_Ip_ClearPins(RGBLED0_RED_PORT,1 << RGBLED0_RED_PIN);
        	Siul2_Dio_Ip_ClearPins(RGBLED0_GREEN_PORT,1 << RGBLED0_GREEN_PIN);
        	Siul2_Dio_Ip_SetPins(RGBLED0_BLUE_PORT,1 << RGBLED0_BLUE_PIN);
        }

        /* Not very exciting - just delay... */
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

/**
* @brief        Main function of the example
* @details      Initializes the used drivers and uses 1 binary Semaphore and
*               2 tasks to toggle a LED.
*/
int main(void)
{
    /* Initialize Clock */
    Clock_Ip_StatusType Status_Init_Clock = CLOCK_IP_ERROR;
    Status_Init_Clock = Clock_Ip_Init(Clock_Ip_aClockConfig);

    if (Status_Init_Clock != CLOCK_IP_SUCCESS)
    {
        while(1); /* Error during initialization. */
    }

    /* Initialize all pins using the Port driver */
    Siul2_Port_Ip_PortStatusType Status_Init_Port = SIUL2_PORT_ERROR;
    Status_Init_Port = Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);

    if(Status_Init_Port != SIUL2_PORT_SUCCESS)
    {
        while(1); /* Error during initialization. */
    }

    vSemaphoreCreateBinary(sem_handle);
    xTaskCreate( LEDTask   , ( const char * const ) "LEDTask", configMINIMAL_STACK_SIZE, (void*)0, main_TASK_PRIORITY, NULL );
    vTaskStartScheduler();

    for( ;; );

    return 0;
}

/** @} */

结尾

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

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

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

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

相关文章

C++ 之LeetCode刷题记录(三十八)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 18. 四数之和 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target…

Thonny 开发环境下使用PICO系列教程1———利用Pico芯片内置传感器输出温度

Thonny 开发环境下使用PICO系列教程1———利用Pico芯片内置传感器输出温度 一、安装Thonny环境安装测试 在Thonny设定CircuitPython环境硬件部分Thonny部分 利用Pico内置温度传感器输出CPU温度 一、安装Thonny 下载链接&#xff1a; https://github.com/thonny/thonny/releas…

STM32各外设初始化步骤

1、GPIO初始化步骤 1、使能GPIO时钟 2、初始化GPIO的输入/输出模式 3、设置GPIO的输出值或获取GPIO的输入值 GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin…

记事本怎么导入Excel文件 记事本数据导入Excel方法

在日常生活中&#xff0c;记事本软件已经成为了我不可或缺的助手&#xff0c;帮助我记录着点点滴滴&#xff0c;释放了大脑的负担。然而&#xff0c;随着时间的推移&#xff0c;记事本里的内容越来越多&#xff0c;如何高效地整理这些数据成为了一个新的问题。特别是当我需要将…

2024Java高频精选面试题讲解,mysql语句优化面试

前言 一位小伙伴准备了许久的阿里Java面试&#xff0c;原以为能够顺利拿下offer&#xff0c;但在第三面还是被摁在地上反复摩擦&#xff0c;丧气一段时间后&#xff0c;小伙伴调整了心态重新尝试了一下&#xff0c;最终拿下了offer&#xff0c;今天小编把这位小伙伴遇到的面试…

操作系统(笔记)(一)

1、操作系统的功能和目标 1.1功能 存储管理文件管理设备管理处理机管理进程管理 1.2目标 方便性&#xff1a;操作系统作为用户与计算机硬件系统之间的接口&#xff0c;提供了直观的命令和界面&#xff0c;使得用户能够更容易地操作计算机。有效性&#xff1a;操作系统旨在提…

Java基于微信小程序的高校讲座预约系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

SpringBoot集成mongodb

mongodb环境搭建 采用docker-compose搭建&#xff0c;配置文件如下 version: 3# 网桥mongo -> 方便相互通讯 networks:mongo:services:# mongodbmongodb:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mongo:4.4.6 # 原镜像mongo:4.4.6restart: unless-stoppedcont…

Vue.js+SpringBoot开发天然气工程业务管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

抖音涨粉技巧揭秘可靠吗是真的吗

抖音涨粉技巧揭秘&#xff1a;真实与可靠 在抖音这样一个火爆的短视频平台上&#xff0c;拥有大量粉丝已成为许多人的追求目标。因此&#xff0c;一些涨粉技巧被推广为能够快速增加粉丝数量的方法。然而&#xff0c;这些技巧到底可靠吗&#xff1f;我们一起来揭秘。 揭秘抖音涨…

Python打发无聊时光:13.用pywin32库制作电脑本地快捷应用

第一步&#xff1a;新建一个simple_app.py 装pywin32库 pip install pywin32 新建一个simple_app.py&#xff0c;复制下面代码&#xff0c;或者可以自己设计内容 import tkinter as tkclass AnimatedGUI:def __init__(self, root):self.root rootself.root.title("玩…

Python爬虫——Requests

目录 简介 基本使用​编辑 ​编辑 安装 一个类型和六个属性 请求类型 GET 代码示例 POST 代码示例 代理 古诗文网绕过验证码登录 总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API&#xff0c;使得发送HTTP请求变得非常容易。…

【嵌入式——QT】QTableWidget

表格小部件为应用程序提供标准的表格显示功能。QTableWidget中的项由QTableWidgetItem提供。 如果你想要一个使用你自己的数据模型的表&#xff0c;你应该使用QTableView而不是这个类。 常用函数 cellWidget(int row, int column) const&#xff1a;返回显示在给定行和列的单…

嵌入式 Linux 开发的基本概念 及 学习路线

原文链接&#xff1a;https://www.cnblogs.com/DSCC2020/p/13787321.html 1.嵌入式 Linux 开发的基本概念 1.1嵌入式 Linux 的组成 嵌入式 Linux 系统&#xff0c;就相当于一套完整的 PC 软件系统&#xff0c;如下图所示&#xff1a; 1.2嵌入式 Linux 的日常开发流程 Bootloa…

【深度学习】实验10 使用Keras完成逻辑回归

文章目录 使用Keras完成逻辑回归1. 导入Keras库2. 生成数据集3. 构造神经网络模型4. 训练模型5. 测试模型6. 分析模型 附&#xff1a;系列文章 使用Keras完成逻辑回归 Keras是一个开源的深度学习框架&#xff0c;能够高效地实现神经网络和深度学习模型。它由纽约大学的Francoi…

MS5192TA/MS5193TA低噪声、低功耗、16/24 位 ∑-ΔADC

产品简述 MS5192TA/MS5193TA 是一款适合高精度测量应用的低功耗、低 噪声、三通道差分输入的 16bit/24bit 模数转换器。其内部集成了输 入缓冲器、低噪声仪表放大器&#xff0c;当增益设置为 64 &#xff0c;更新速率为 4.17Hz 时&#xff0c;均方根噪声为 25nV 。集…

uniapp自定义底部导航

我这边使用的是uview组件库&#xff0c;进行开发的&#xff01; <template><view class"footer-bar"><u-tabbar :value"select ? select : 0" change"changeTab" :border"true" :fixed"true" :placeholde…

2025汤家凤考研数学,基础视频课程+百度网盘+PDF真题讲解

平时大家都半开玩笑地讲&#xff1a;我数学想要考150分&#xff01;那索性今天这一期&#xff0c;今天认真和大家聊一下&#xff1a; 想考到考研数学150分&#xff0c;应该如何准备&#xff1f; 如果还有小伙伴不知道在哪看汤神的ke&#xff0c;可以看一下以下 2025汤神全程…

JVM入门篇(面试前速补)

近期看看JVM&#xff0c;看了狂神说入门教学&#xff0c;总结下给大家。 文章目录 1、JVM的位置2、JVM的结构体系3、类加载器及双亲委派机制3.1、类加载器作用3.2、类加载器类型3.3、双亲委派机制 * 4、沙箱安全机制5、Native、方法区5.1、Native&#xff08;本地方法栈引用&a…

算法设计.

文章目录 1. 贪心算法&#xff1a;只看当前1.1 零钱兑换问题&#xff1a;力扣322 2. 活动选择问题3. 动态规划3.1 不同路径&#xff1a;3.2 0-1背包问题3.3 完全背包问题3.4 零钱兑换-动态规划 4. 最长公共字串--动态规划5. 最长公共子序列6. 最长递增子序列7. 打家劫舍8. 全排…