MCU的管脚操作程序主要以AutoSAR生成为主,熟料配置Port是AutoSAR架构下MCU开发的基础。
结合Infineon-TC39x-DataSheet-v01 手册可以,TC397具有17组普通port口
把P00.0配置为CAN10_TXD通信脚。
ALT5指代O5:
在Short Name处填入合适的名称;
在Number处填入port口编号,仅便于识别Port用;
在Number Of Port Pins处填入该组的管脚个数;
pin controller select选择DISABLE,统一不使能控制器选择;
Pin Direction选择PIN脚OUT/IN(输出与输入)模式;
pin enable analog input only(引脚只允许模拟输入),作为普通管脚选择DISABLE(不使能);
pin Id填入PIN脚号,该为0组第0号脚所以填入0;
pin Inittial Mode结合图2与图3可知,配置为CAN的TXD选择ALT5;
pim Output Pin Driver Mode选择输出方式,此处选择推挽输出;
pin controller select选择DISABLE,统一不使能控制器选择;
Pin Direction选择PIN脚OUT/IN(输出与输入)模式,此处选择为输入模式;
pin enable analog input only(引脚只允许模拟输入),作为普通管脚选择DISABLE(不使能);
pin Id填入PIN脚号,该为0组第1号脚所以填入1;
pin Inittial Mode结合图6与图7可知,配置为普通管脚GPIO;
pin Input Pull Resistor(引脚输入拉阻器)此处选择管脚为上拉输入模式;
pin Level Value(引脚电平值)选择LOW;
//写
void Dio_WriteChannel(const Dio_ChannelType ChannelId,const Dio_LevelType Level);
//读
typedef uint8 Dio_LevelType;
Dio_LevelType Dio_ReadChannel(const Dio_ChannelType ChannelId);
以P23.6脚为例:
Dio_LevelType Port_Type;
Port_Type = Dio_ReadChannel(0x176);//0x17=23,0x6=6为P23.6
第410行:PortNumber = Dio_lGetPortNumber(ChannelId);读取port号0x17=23;
第412行:PinNumber = Dio_lGetPinNumber(ChannelId);读取PIN脚为0x6=6;
第447-461行读取处该管脚的电平;
以P23.6脚为例:
Dio_WriteChannel(0x176,1);//0x176指代P23.6脚;1为输出高,可知0为输出低;
第524行:PortNumber = Dio_lGetPortNumber(ChannelId);读取port号0x17=23;
第526行:PinNumber = Dio_lGetPinNumber(ChannelId);读取PIN脚为0x6=6;
第538-597行设置该管脚的电平;
Dio主要为Port定义后的管脚定义别名,便于程序调用。
定义IC为TC397
定义Port Id号
Dio是对Port的别名定义
在Port0组内IN_CAN2MCU_1_INH为Pin10号脚。
IN_CAN2MCU_1_INH为P00.10脚。
读写函数同3-2-1与3-2-2 :
读:
Dio_LevelType Port_Type;
Port_Type = Dio_ReadChannel(DioConf_DioChannel_IN_CAN2MCU_1_INH);
写:
Dio_WriteChannel(DioConf_DioChannel_IN_CAN2MCU_1_INH,1);