/* pin PA[10] - USER LED3 (DS4) on DEV-KIT */
#define PORT PTA
#define LED3 10
PTA在定义在 MPC5748G_features.h 文件中,如下源码
PTA:选中了PA这一组IO口的首地址,选择PTA组的不同pin口时直接对相应位的寄存器置1或者0即可
LED_PIN 10:在开发板DEV-KIT中LED3(DS4)为 pin PA[10]
// 以下列出的是 MPC5748G_features.h 官方提供部分源码
/* GPIO - Peripheral instance base addresses */
/** Peripheral PTA base address */
#define PTA_BASE (0xFFFC1700u)
/** Peripheral PTA base pointer */
#define PTA ((GPIO_Type *)PTA_BASE)
/** Peripheral PTB base address */
#define PTB_BASE (0xFFFC1702u)
/** Peripheral PTB base pointer */
#define PTB ((GPIO_Type *)PTB_BASE)
……
……
#define PTP_BASE (0xFFFC171Eu)
/** Peripheral PTP base pointer */
#define PTP ((GPIO_Type *)PTP_BASE)
/** Peripheral PTQ base address */
#define PTQ_BASE (0xFFFC1720u)
/** Peripheral PTQ base pointer */
#define PTQ ((GPIO_Type *)PTQ_BASE)
GPIO的设置方法:
// 0:ON 1:OFF
PINS_DRV_TogglePins(PORT, (0 << LED3 ));
PINS_DRV_TogglePins(PORT, (1 << LED3 ));
PINS_DRV_WritePin(PORT, LED3 , 0);
PINS_DRV_WritePin(PORT, LED3 , 1);
PINS_DRV_WritePins(PORT, (0 << LED3 ));
PINS_DRV_WritePins(PORT, (1 << LED3 ));
PINS_DRV_SetPins(PORT, (0 << LED3 ));
PINS_DRV_SetPins(PORT, (1 << LED3 ));
//在给定的结构中,这个函数用提供的选项配置引脚
status_t PINS_DRV_Init(uint32_t pinCount, const pin_settings_config_t config[])
// 此功能可配置参数引脚中列出的输出引脚(*'1')的值为'set'(HIGH)
void PINS_DRV_SetPins(GPIO_Type * const base, pins_channel_type_t pins)
CLOCK_SYS_Init
/*FUNCTION**********************************************************************
*
* Function Name : CLOCK_SYS_Init
* Description : Install pre-defined clock configurations.
* This function installs the pre-defined clock configuration table to the
* clock manager.
*
* Implements CLOCK_SYS_Init_Activity
*END**************************************************************************/
status_t CLOCK_SYS_Init(clock_manager_user_config_t const **clockConfigsPtr,
uint8_t configsNumber,
clock_manager_callback_user_config_t **callbacksPtr,
uint8_t callbacksNumber)
{
DEV_ASSERT(clockConfigsPtr != NULL);
DEV_ASSERT(callbacksPtr != NULL);
g_clockState.configTable = clockConfigsPtr; //指针指向时钟配置表
g_clockState.clockConfigNum = configsNumber; //时钟配置数
g_clockState.callbackConfig = callbacksPtr; //指针指向回调函数表
g_clockState.callbackNum = callbacksNumber; //时钟回调的数目
//errorCallbackIndex是返回错误的回调的索引在时钟模式切换期间。
//如果所有回调均返回成功,则errorCallbackIndex是callbacksNumber。
g_clockState.errorCallbackIndex = callbacksNumber; //返回错误的回调的索引
return STATUS_SUCCESS;
}
Timer
/*
the final value of counter (only FTM)
此函数初始化时钟源、定时器实例的预估程序(LPIT、PIT除外)、最终计数器的值(仅FTM)。
该函数还可以设置定时通道的通知类型和回调函数。
定时器实例号及其配置结构作为参数传递。
调用此函数后,计时器通道默认不开始计数。
必须调用TIMING_StartChannel函数来启动计时器通道计数。
*/
status_t TIMING_Init(const timing_instance_t * const instance,
const timer_config_t * const config)
// 此函数以工程单位(纳秒、微秒或毫秒)获取刻度分辨率。
// 此函数的结果用于计算周期、剩余时间或工程单元的运行时间。
status_t TIMING_GetResolution(const timing_instance_t * const instance,
const timer_resolution_type_t type,
uint64_t * const resolution)
//该函数以一个新的周期(以刻度为单位)开始通道计数。
void TIMING_StartChannel(const timing_instance_t * const instance,
const uint8_t channel,
const uint32_t periodTicks)
LinFlexD
介绍:
术语 | 描述 |
---|---|
LIN | 本地互联网络 |
UART | 通用异步收发机 |
ID | 标识符字段 |
DMA | 直接存储器存取 |
TCD | 传输控制描述符 |
IPS | 外围总线接口 |
IRQ | 中断请求 |
FSM | 有限状态机 |
WS | 等待状态 |
SW | 软件 |
CPU | 中央处理机 |
SoC | 片上系统 |
PAL | 特别访问级别 |
主要特点:
LINFlexD控制器可以在多种模式下运行,每种模式都有一组不同的特性,这些特性将在下面的部分中描述。此外,LINFlexD控制器有几个所有模式的共同特点:
分数波特率发生器
LIN 模式主要特点:
UART 模式主要特点:
typedef struct {
bool enableFD; / *!<启用灵活的数据速率* /
bool enableBRS; / *!<启用CAN FD框架内的比特率切换* /
uint8_t fdPadding; / *!<数据长度代码(DLC)时用于填充的值
指定的有效负载大小大于实际数据长度* /
can_msg_id_type_t idType; / *!<指定帧格式是标准格式还是扩展格式* /
bool isRemote; / *!<指定框架是标准框架还是远程框架* /
} can_buff_config_t;