项目工程框架

项目驱动文件这个见过,三个main文件真的是开了眼,一个main代表一个核吗?

按照以往对实现LED闪烁的流程,一般是先配置时钟、再配置IO、延时,实现反转效果。

Blinky_LED.c

在驱动文件里:

/*********************************************************************************************************************/
/*-----------------------------------------------------Includes------------------------------------------------------*/
/*********************************************************************************************************************/
#include "IfxPort.h"
#include "Bsp.h"/*********************************************************************************************************************/
/*------------------------------------------------------Macros-------------------------------------------------------*/
/*********************************************************************************************************************/
#define LED         &MODULE_P00,5                                           /* LED: Port, Pin definition            */
#define WAIT_TIME   500                                                     /* Wait time constant in milliseconds   *//*********************************************************************************************************************/
/*---------------------------------------------Function Implementations----------------------------------------------*/
/*********************************************************************************************************************/
/* This function initializes the port pin which drives the LED */
void initLED(void)
{/* Initialization of the LED used in this example */IfxPort_setPinModeOutput(LED, IfxPort_OutputMode_pushPull, IfxPort_OutputIdx_general);/* Switch OFF the LED (low-level active) */IfxPort_setPinHigh(LED);
}/* This function toggles the port pin and wait 500 milliseconds */
void blinkLED(void)
{IfxPort_togglePin(LED);                                                     /* Toggle the state of the LED      */waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, WAIT_TIME));    /* Wait 500 milliseconds            */
}

Bsp.h

这个看名字都可以猜出来,板级支持包。

默认系统定时器 MODULE_STM0 模式:

#ifndef BSP_DEFAULT_TIMER
/** Defined the default timer used */
#define BSP_DEFAULT_TIMER (&MODULE_STM0)
#endif

一些中断函数,使能或者不使能,甚至还可以返回中断的一些状态。

IFX_INLINE boolean areInterruptsEnabled(void);
IFX_INLINE boolean disableInterrupts(void);
IFX_INLINE void    enableInterrupts(void);
IFX_INLINE void    restoreInterrupts(boolean enabled);
IFX_INLINE void    forceDisableInterrupts(void);

还有一些系统定时器函数,非常有意思,有的可以查看你的程序运行了多长时间,有的可以查看程序距离结束还有多久……

/** \addtogroup library_srvsw_sysse_bsp_bsp* \{ */
/** \name Time APIs* \{ */
IFX_INLINE Ifx_TickTime addTTime(Ifx_TickTime a, Ifx_TickTime b);
IFX_INLINE Ifx_TickTime elapsed(Ifx_TickTime since);
IFX_INLINE Ifx_TickTime getDeadLine(Ifx_TickTime timeout);
IFX_INLINE Ifx_TickTime getTimeout(Ifx_TickTime deadline);
IFX_EXTERN void         initTime(void);
IFX_INLINE boolean      isDeadLine(Ifx_TickTime deadLine);
IFX_INLINE Ifx_TickTime now(void);
IFX_INLINE Ifx_TickTime nowWithoutCriticalSection(void);
IFX_INLINE boolean      poll(volatile boolean *test, Ifx_TickTime timeout);
IFX_INLINE Ifx_TickTime timingNoInterruptEnd(Ifx_TickTime since, boolean interruptEnabled);
IFX_INLINE Ifx_TickTime timingNoInterruptStart(boolean *interruptEnabled);
IFX_INLINE void         wait(Ifx_TickTime timeout);
IFX_EXTERN void         waitPoll(void);
IFX_EXTERN void         waitTime(Ifx_TickTime timeout);/** Prototype for wait() functions */
typedef void (*WaitTimeFunction)(Ifx_TickTime timeout);

然后就是一些IO口的配置函数

#define PIN_DRIVER_STRONG_SHARP IfxPort_PadDriver_cmosAutomotiveSpeed1
#define Pin_setState(pin, mode)                            IfxPort_setPinState((pin)->port, (pin)->pinIndex, (mode))
#define Pin_setGroupState(pin, mask, data)                 IfxPort_setGroupState((pin)->port, (pin)->pinIndex, (mask), (data))
#define Pin_setMode(pin, mode)                             IfxPort_setPinMode((pin)->port, (pin)->pinIndex, (mode))
#define Pin_setDriver(pin, mode)                           IfxPort_setPinPadDriver((pin)->port, (pin)->pinIndex, (mode))
#define Pin_setStateHigh(pin)                              IfxPort_setPinHigh((pin)->port, (pin)->pinIndex)
#define Pin_setStateLow(pin)                               IfxPort_setPinLow((pin)->port, (pin)->pinIndex)
#define Pin_getState(pin)                                  IfxPort_getPinState((pin)->port, (pin)->pinIndex)
#define Pin_setGroupModeOutput(pin, mask, mode, outputIdx) IfxPort_setGroupModeOutput((pin)->port, (pin)->pinIndex, (mask), (mode), (outputIdx))
#define Pin_setGroupModeInput(pin, mask, mode)             IfxPort_setGroupModeInput((pin)->port, (pin)->pinIndex, (mask), (mode))
#define Pin_setGroupState(pin, mask, data)                 IfxPort_setGroupState((pin)->port, (pin)->pinIndex, (mask), (data))
#define Pin_getGroupState(pin, mask)                       IfxPort_getGroupState((pin)->port, (pin)->pinIndex, (mask))
#define Pin_enableEmgStop(pin)                             IfxPort_enableEmergencyStop((pin)->port, (pin)->pinIndex)

IfxPort.h

这个也是,看名字就可以大致猜出来,Port端口,关于端口的一些结构体参数、功能定义什么的。

如:

输入模式:

/** \brief Ifx_P output modification modes definition.*/
typedef enum
{IfxPort_InputMode_undefined    = -1,//不定义IfxPort_InputMode_noPullDevice = 0 << 3,//?IfxPort_InputMode_pullDown = 1U << 3,//下拉IfxPort_InputMode_pullUp   = 2U << 3  //上拉 /**< \brief  */
} IfxPort_InputMode;

输出模式:

/** \brief Pin output mode definition*/
typedef enum
{IfxPort_OutputMode_pushPull      = 0x10U << 3,IfxPort_OutputMode_openDrain = 0x18U << 3,IfxPort_OutputMode_none      = 0
} IfxPort_OutputMode;

初始化的:

/** \addtogroup IfxLld_Port_Std_DataStructures* \{ */
/** \brief Defines a pin*/
typedef struct
{Ifx_P *port;uint8  pinIndex;
} IfxPort_Pin;/** \brief To configure pins*/
typedef struct
{Ifx_P            *port;uint8             pinIndex;IfxPort_OutputIdx mode;IfxPort_PadDriver padDriver;
} IfxPort_Pin_Config;

等等……

还有各种函数,非常细,具体的可以去查看这个头文件。

Cpu0_Main.c

*********************************************************************************************************************//*\title Blinky LED* \abstract An LED is blinking based on the timing given by a wait function.* \description A wait function is used to add delays between switching on and switching off an LED*              on port pin P00.5.** \name Blinky_LED_1_KIT_TC275_LK* \version V1.0.2* \board AURIX TC275 lite Kit, KIT_AURIX_TC275_LITE, TC27xTP_D-Step* \keywords AURIX, Blinky_LED_1, Blinky, LED, Lite* \documents https://www.infineon.com/aurix-expert-training/Infineon-AURIX_Blinky_LED_1_KIT_TC275_LK-TR-v01_00_02-EN.pdf* \documents https://www.infineon.com/aurix-expert-training/TC27D_iLLD_UM_1_0_1_12_0.chm* \lastUpdated 2021-06-29*********************************************************************************************************************/
#include "Ifx_Types.h"
#include "IfxCpu.h"
#include "IfxScuWdt.h"
#include "Blinky_LED.h"IfxCpu_syncEvent g_cpuSyncEvent = 0;//用于事件同步int 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 等待CPU进行事件同步*/IfxCpu_emitEvent(&g_cpuSyncEvent);     //CPU发起事件IfxCpu_waitEvent(&g_cpuSyncEvent, 1);  //等待事件initLED();  /* Initialize the LED port pin      */while(1){blinkLED(); /* Make the LED blink           */}return (1);//返回1,也是我没想到的
}

IfxCpu.h

CPU基本功能

如:

CPU状态模式

/** \addtogroup IfxLld_Cpu_Std_Enum* \{ */
/** \brief Enumeration for the Cpu mode*/
typedef enum
{IfxCpu_CoreMode_halt,//挂起IfxCpu_CoreMode_run,//运行IfxCpu_CoreMode_idle,//待机IfxCpu_CoreMode_sleep,//睡眠IfxCpu_CoreMode_stby,//?IfxCpu_CoreMode_unknown//未知
} IfxCpu_CoreMode;

先去看看手册,有些功能不是很懂

测试

编译和烧录

LED闪烁

TC275——04Blinky-LED相关推荐

  1. tc275单片机的内核_TC275开发板学习心得(一)

    1.刚拿到TC27T开发板时,是比较兴奋的,开发板是一块红色的正方形板卡,板子布局简洁干净.感觉板卡上遗憾的地方,按键和指示灯放在了板卡背面,给操作和指示带来些不便,还有板卡上封装丝印没有明显印在板卡 ...

  2. 基于英飞凌AURIX TC275 Lite的三核轮休工程

    目录 项目介绍 硬件介绍 电源管理 代码结构及说明 三核主程序 GPIO CPU0请求系统休眠 两个系统定时器中断 功能展示 项目总结 项目介绍 本项目基于AURIX TC275 Lite开发板套件, ...

  3. LED芯片,应用品,蓝宝石衬底,集成电路,UV

    LED芯片,应用品,蓝宝石衬底,集成电路,UV 三安主要从事全色系超高亮度LED芯片的研发,生产与销售,产品性能稳定,品质优异. 产品覆盖 三安能够提供全波长范围的LED,产品可覆盖全部可见光和不可见 ...

  4. LED液晶与OLED:电视显示技术比较

    LED液晶与OLED:电视显示技术比较 LED LCD vs. OLED: TV display technologies compared 到目前为止,LED-LCD是主导的电视显示技术,特别是在等 ...

  5. [51单片机学习笔记ONE]-----LED灯的多种使用方法

    一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间 ...

  6. win7调整屏幕亮度_番禺区户外LED屏幕求购,区LCD屏幕解决方案

    广州市唯昕电子科技有限公司为您详细解读gVtwd番禺区户外LED屏幕求购的相关知识与详情,正在当今大尺寸液晶面板范畴,55英寸卖得货已经成为市场的支流.但是关于很多行业用户来说,李某们会担忧将来使用的 ...

  7. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  8. 和12岁小同志搞创客开发:如何驱动LED点阵模块?

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  9. 和12岁小同志搞创客开发:如何驱动LED数码管?

    目录 1.LED数码管分类和驱动原理 2.LED数码管驱动实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_ ...

最新文章

  1. R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames
  2. python主要用来开发什么-python主要用于什么开发
  3. 同步通信和异步通信区别
  4. 文献记录(part74)--Subspace clustering via seeking neighbors with minimum reconstruction error
  5. 第二周CoreiDRAW总结
  6. 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
  7. 下一代 IDE:Eclipse Che 究竟有什么奥秘?
  8. 周末ROS学习沙龙第三期——launch文件、自定义服务通信、控制机器人移动、传感器数据处理
  9. Python:PyCharm提示Local variable ‘x‘ value is not used
  10. python sys模块_Python sys模块
  11. JAVA线程池shutdown和shutdownNow的区别
  12. Android studio 录屏并制作gif
  13. Oracle 11g RAC OEM配置
  14. 拼多多员工因匿名发贴被辞退,拼多多最新回应
  15. 使用SpriteAtlas打包图集并显示
  16. SAS JAVA基础开发包下载
  17. V4L2视频驱动框架---meida_device管理模块简述
  18. Android SD卡及U盘插拔状态监听和内容读取
  19. 小公司的程序员,老想跳槽怎么办?
  20. githubusercontent.com被墙

热门文章

  1. 【读书笔记】读《自制力:如何掌控自己的时间与生活?》 —— 25条自制力掌控法则
  2. Phonetic symbol 清辅音 -- s
  3. 2021 美赛时间安排表
  4. 银行、券商们的下一代App该往哪里走?
  5. MetersPhere参数赋值时间戳+对接口参数进行加密---form-data格式请求
  6. iPad----------教你如何查询ipad型号
  7. golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
  8. 2021中大厂php+go面试题(2)
  9. 【PTA】匿名内部类:实现Comparator比较器
  10. 大数据系列(一)之hadoop介绍及集群搭建