当前位置: 首页 > news >正文

(三)点亮LED

文章目录

  • 点亮LED
    • 简单描述
    • .c 代码:
    • .h 代码:
    • 主函数调用:
    • 测试现象:


点亮LED


简单描述

查看原理图,对应LED的io口是:

P33_4 P33_5;

一般外设io口 在英飞凌这边都写成:&MODULE_P33 以&MODULE开头(并且一般其他的外设也都是以&MODULE开头,比如GTM外设模块,&MODULE_GTM,再比如ASCLIN模块,&MODULE_ASCLIN2)等等

基于iLLD库里面,跟外设io口相关的基本都在IfxPort.h里面:

#include "IfxPort.h"

延时的waitTime函数,以及获取相应时间,对应的滴答定时器的数值函数,分别在:

#include "Bsp.h"
#include "IfxStm.h"

注意:waitTime传入的参数是,系统的滴答数值,借助IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, 1000)可以直接获取对应时间的滴答数量。比如这里延时1000ms,就用IfxStm_getTicksFromMilliseconds,如果是1000us,那就是调用这个IfxStm_getTicksFromMicroseconds。

添加.c.h文件,应用为王

.c 代码:

void led_Init(void)
{
    IfxPort_setPinMode(&MODULE_P33,5,IfxPort_Mode_outputPushPullGeneral);  //初始化P33_5推挽输出
    IfxPort_setPinMode(&MODULE_P33,4,IfxPort_Mode_outputPushPullGeneral); 	//初始化P33_4推挽输出

    IfxPort_setPinState(&MODULE_P33,5,IfxPort_State_high);		// 设置P33_5输出高电平
    IfxPort_setPinState(&MODULE_P33,4,IfxPort_State_high);		// 设置P33_4输出高电平


void blink_Led(void)
{
    IfxPort_setPinState(&MODULE_P33,5,IfxPort_State_low);		// 设置P33_5输出低电平
    IfxPort_setPinState(&MODULE_P33,4,IfxPort_State_low);		// 设置P33_4输出低电平
    waitTime(IfxStm_getTicksFromMilliseconds(IFXSTM_DEFAULT_TIMER,1000));	// 延时1000ms  

    IfxPort_setPinState(&MODULE_P33,5,IfxPort_State_high);
    IfxPort_setPinState(&MODULE_P33,4,IfxPort_State_high);
    waitTime(IfxStm_getTicksFromMilliseconds(IFXSTM_DEFAULT_TIMER,1000));
}

.h 代码:

#ifndef LED_H_
#define LED_H_

void led_Init(void);
void blink_Led(void);

#endif

主函数调用:

#include "Ifx_Types.h"
#include "IfxCpu.h"
#include "IfxScuWdt.h"

#include "led.h"

IFX_ALIGN(4) IfxCpu_syncEvent g_cpuSyncEvent = 0;

void core0_main(void)
{
    IfxCpu_enableInterrupts();
    
    /* !!WATCHDOG0 AND SAFETY WATCHDOG ARE DISABLED HERE!!
     * Enable the watchdogs and service them periodically if it is required
     */
    IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
    IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
    
    /* Wait for CPU sync event */
    IfxCpu_emitEvent(&g_cpuSyncEvent);
    IfxCpu_waitEvent(&g_cpuSyncEvent, 1);
    led_Init();
    
    while(1)
    {
        blink_Led();
    }
}

测试现象:

2个led间歇1000ms闪烁

http://www.dtcms.com/a/98678.html

相关文章:

  • ngx_http_core_merge_srv_conf
  • 外观模式(Facade Pattern):复杂系统的“统一入口”
  • Qwen-0.5b linux部署
  • 订单超时自动关闭:电商系统的技术难题与解决方案
  • 常用登录Linux系统的方法以及操作指南
  • Spring Cloud Gateway详细介绍简单案例
  • Js 主线程和异步队列哪个先执行
  • Yolo系列之Yolov4的改进及网络框架
  • Java入门知识总结——章节(二)
  • bluecode-20240913_1_数据解码
  • 【Kafka】分布式消息队列的核心奥秘
  • 3.29前端模拟面试
  • 【区块链安全 | 第八篇】多签机制及恶意多签
  • org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 Maven打包失败
  • 逗万DareWorks|创意重构书写美学,引领新潮无界的文创革命
  • 什么是贴源库
  • unique_ptr的详细介绍
  • 量子计算与项目管理:2025年颠覆性技术将如何重构任务分解逻辑?
  • 【商城实战(103)】商城实战终章:携手共进,迈向新程
  • AI日报 - 2025年03月29日
  • 团建--树+dfs
  • MySQL的基础语法2(函数-字符串函数、数值函数、日期函数和流程函数 )
  • Linux之数据链路层
  • Vue 类与样式
  • 【数学建模】(启发式算法)模拟退火算法:原理、实现与应用
  • [c++项目]基于微服务的聊天室服务端测试
  • 基于ssm的课程辅助教学平台(全套)
  • 直流电机类型及其控制技术
  • 免费下载 | 2025年网络安全报告
  • libimobiledevice项目中各个库的作用