TC275——04Blinky-LED
项目工程框架
项目驱动文件这个见过,三个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相关推荐
- tc275单片机的内核_TC275开发板学习心得(一)
1.刚拿到TC27T开发板时,是比较兴奋的,开发板是一块红色的正方形板卡,板子布局简洁干净.感觉板卡上遗憾的地方,按键和指示灯放在了板卡背面,给操作和指示带来些不便,还有板卡上封装丝印没有明显印在板卡 ...
- 基于英飞凌AURIX TC275 Lite的三核轮休工程
目录 项目介绍 硬件介绍 电源管理 代码结构及说明 三核主程序 GPIO CPU0请求系统休眠 两个系统定时器中断 功能展示 项目总结 项目介绍 本项目基于AURIX TC275 Lite开发板套件, ...
- LED芯片,应用品,蓝宝石衬底,集成电路,UV
LED芯片,应用品,蓝宝石衬底,集成电路,UV 三安主要从事全色系超高亮度LED芯片的研发,生产与销售,产品性能稳定,品质优异. 产品覆盖 三安能够提供全波长范围的LED,产品可覆盖全部可见光和不可见 ...
- LED液晶与OLED:电视显示技术比较
LED液晶与OLED:电视显示技术比较 LED LCD vs. OLED: TV display technologies compared 到目前为止,LED-LCD是主导的电视显示技术,特别是在等 ...
- [51单片机学习笔记ONE]-----LED灯的多种使用方法
一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间 ...
- win7调整屏幕亮度_番禺区户外LED屏幕求购,区LCD屏幕解决方案
广州市唯昕电子科技有限公司为您详细解读gVtwd番禺区户外LED屏幕求购的相关知识与详情,正在当今大尺寸液晶面板范畴,55英寸卖得货已经成为市场的支流.但是关于很多行业用户来说,李某们会担忧将来使用的 ...
- 和12岁小同志搞创客开发:手撕代码,点亮LED灯
目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...
- 和12岁小同志搞创客开发:如何驱动LED点阵模块?
机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...
- 和12岁小同志搞创客开发:如何驱动LED数码管?
目录 1.LED数码管分类和驱动原理 2.LED数码管驱动实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_ ...
最新文章
- R语言数据类型:Logical、Numeric、Integer、Complex、Character、Vectors、Lists、Matrices、Arrays、Factors、DataFrames
- python主要用来开发什么-python主要用于什么开发
- 同步通信和异步通信区别
- 文献记录(part74)--Subspace clustering via seeking neighbors with minimum reconstruction error
- 第二周CoreiDRAW总结
- 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
- 下一代 IDE:Eclipse Che 究竟有什么奥秘?
- 周末ROS学习沙龙第三期——launch文件、自定义服务通信、控制机器人移动、传感器数据处理
- Python:PyCharm提示Local variable ‘x‘ value is not used
- python sys模块_Python sys模块
- JAVA线程池shutdown和shutdownNow的区别
- Android studio 录屏并制作gif
- Oracle 11g RAC OEM配置
- 拼多多员工因匿名发贴被辞退,拼多多最新回应
- 使用SpriteAtlas打包图集并显示
- SAS JAVA基础开发包下载
- V4L2视频驱动框架---meida_device管理模块简述
- Android SD卡及U盘插拔状态监听和内容读取
- 小公司的程序员,老想跳槽怎么办?
- githubusercontent.com被墙
热门文章
- 【读书笔记】读《自制力:如何掌控自己的时间与生活?》 —— 25条自制力掌控法则
- Phonetic symbol 清辅音 -- s
- 2021 美赛时间安排表
- 银行、券商们的下一代App该往哪里走?
- MetersPhere参数赋值时间戳+对接口参数进行加密---form-data格式请求
- iPad----------教你如何查询ipad型号
- golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
- 2021中大厂php+go面试题(2)
- 【PTA】匿名内部类:实现Comparator比较器
- 大数据系列(一)之hadoop介绍及集群搭建