/* GPIO外部中断 */
IFX_INTERRUPT(PIN_INT0_IRQHandler, PIN_INT0_VECTABNUM, PIN_INT0_PRIORITY);
IFX_INTERRUPT(PIN_INT1_IRQHandler, PIN_INT1_VECTABNUM, PIN_INT1_PRIORITY);
IFX_INTERRUPT(PIN_INT2_IRQHandler, PIN_INT2_VECTABNUM, PIN_INT2_PRIORITY);
IFX_INTERRUPT(PIN_INT3_IRQHandler, PIN_INT3_VECTABNUM, PIN_INT3_PRIORITY);
PIN_INTx_IRQHandler
:中断服务函数名
PIN_INTx_VECTABNUM
:选择中断的处理者(CPU0、CPU1、DMA)
PIN_INTx_PRIORITY
:中断优先级(0-255),数字越大优先级越高,优先级0不可用
中断服务函数
void PIN_INTx_IRQHandler(void)
{
//用户代码
}
初始化外部中断函数
void PIN_Exti(GPIO_Name_t pin, IfxPort_InputMode mode)
配置好以上三个函数,最基本的GPIO中断就配置好了
串口(uart)
ASC异步串行通信,可以作为UART和汽车LIN总线使用。(智能车LIN一般用不到这里主要用到UART)
TC264有4路UART可以使用
串口初始化
初始化函数void UART_InitConfig(UART_RX_t RxPin, UART_TX_t TxPin, uint32 baudrate)
RxPin
: 串口接收管脚
TxPin
: 串口发送管脚
baudrate
: 波特率
配置好初始化函数,结合中断、串口收发函数就可以完成基本的串口功能。
STM(系统定时器)
STM作为系统级的全局定时器,可以为系统提供基础时钟,内有两个比较寄存器,可产生两个独立的中断,以满足需求
TC264有两路STM(STM0/STM1),可提供4路中断
STM初始化函数
void STM_InitConfig(STM_t stm, STM_Channel_t channel, uint32 us)
stm
: STM标号(STM0 、 STM1)
channel
: STM通道(STM_Channel_0 STM_Channel_1)
us
: STM定时中断(时间)
配置好初始化函数就可以调用中断、延时等函数实现相关功能。
ADC
理论有8个转换器,可同步转换;每个转换8个通道,精度为8/10/12位。
ADC端口AN可以作为输入口,不可作为输出口,与ARM单片机不同!
ADC初始化
void ADC_InitConfig(ADC_Channel_t channel, unsigned long Freq_Hz)
channel ADC通道
Freq_Hz ADC通道采样频率
注意:ADC有三个模块,通道0-13、16-25、35-49分别属于这三个通道,unsigned short ADC_Read(ADC_Channel_t chn);
ADC读取函数就可以实现基本的ADC值读取
使用这两个宏定义可以便捷获取ADC通道和对应的组
/* 获取ADC对应组 */
#define ADC_GetGroup(ADC_Channel) ((ADC_Channel & 0xF000)>>12)
/* 获取ADC对应通道 */
#define ADC_GetChannel(ADC_Channel) ((ADC_Channel & 0x0F00)>>8)
编码器正交解码
通用定时器单元GPT1 和GPT2 模块具有非常灵活的多功能定时器结构,可用作定void ENC_InitConfig(ENC_InputPin_t InputPin, ENC_DirPin_t DirPin)
InputPin
: ENC脉冲输入管脚 LQ_GPT12_ENC.h 中枚举体
DirPin
: ENC方向管脚 LQ_GPT12_ENC.h 中枚举体
int16_t ENC_GetCounter(ENC_InputPin_t InputPin)
,获取脉冲函数,使用前需要先初始化。
PWM(由GTM产生)
通用定时器模块(GTM)
有4个ATOM子模块,每个子模块有8路可独立配置的通道
有3个TIM子模块,每个子模块有8路可独立配置的通道
有2个TOM子模块,每个子模块有16路可独立配置的通道
初始化PWM:void ATOM_PWM_InitConfig(IfxGtm_Atom_ToutMap pin, uint32_t duty, uint32_t pwmFreq_Hz)
pin : PWM通道 IfxGtm_PinMap.h中 已经定义了对应的PWM管脚
duty : 占空比 * ATOM_PWM_MAX
pwmFreq_Hz : 频率
设置PWM:void ATOM_PWM_SetDuty(IfxGtm_Atom_ToutMap pin, uint32_t duty, uint32_t pwmFreq_Hz)
TFT屏幕
初始化TFT:void TFTSPI_Init(unsigned char type);
type:0:横屏 1:竖屏
显示6x8像素点大小的数字void TFTSPI_P6X8NUM(unsigned char x, unsigned char y, unsigned short num, unsigned char num_bit,unsigned short word_color,unsigned short back_color)
x: 0 - 20 (行)
y: 0 - 19 (列)
num: 0 - 65535 要显示的数字
num_bit: 0 - 5 数字的位数
word_color:字体颜色
back_color:字体背景颜色
TFTSPI_P8X16:显示8X16像素点大小单个字符、TFTSPI_P8X16Str:显示8X16像素点大小字符串
void TFTSPI_P8X16(unsigned char x, unsigned char y, unsigned char c_dat,unsigned short word_color,unsigned short back_color);
void TFTSPI_P8X16Str(unsigned char x, unsigned char y, char *s_dat,unsigned short word_color,unsigned short back_color);