S32K144的GPIO使用
创始人
2024-02-02 08:25:23

程序初始化前线使用Components工具对时钟和GPIO进行配置,然后再main函数里面初始化。

时钟配置参考:

S32K144之时钟配置 - 明明1109 - 博客园 (cnblogs.com)

gpio配置

S32K SDK使用详解之PinSettings组件配置与使用详解(S32K1xx PORT 和GPIO模块)_嵌入式与汽车电子开发-商业新知 (shangyexinzhi.com)

 

 

 

1,S32K144编程第一步先初始化时钟

/* Initialize and configure clocks* 	-	see clock manager component for details*/CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);

2,初始化GPIO 

PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初始化IO

初始化之后就可以,在程序用调用相关GPIO的驱动程序了。

int main(void)
{/* Write your local variable definition here *//*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/#ifdef PEX_RTOS_INITPEX_RTOS_INIT();                   /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */#endif/*** End of Processor Expert internal initialization.                    ***//* Write your code here *///  WDOG_disable();/* Disable Watchdog in case it is not done in startup code *//* Initialize and configure clocks* 	-	see clock manager component for details*/CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); //初始化IO/* Output direction for LED0 & LED1 */// PINS_DRV_SetPinsDirection(GPIO_PORT, (1 << LED1));/* Set Output value LED0 & LED1 *///PINS_DRV_SetPins(GPIO_PORT, 1 << LED1);LPUART_DRV_Init(INST_LPUART0, &lpuart0_State, &lpuart0_InitConfig0); //初始化串口// PINS_DRV_ClearPins(GPIO_PORT, 1 << LED2);/* For example: for(;;) { } */while(1){// PINS_DRV_SetPins(PTA,1<<15);//将PTA15设置为高/* Toggle output value LED0 & LED1 *///PINS_DRV_TogglePins(GPIO_PORT, ((1 << LED1)));LED0(0);delay_ms(1000);LED0(1);delay_ms(1000);u0_printf("KEY1 按下\r\n");//PINS_DRV_ClearPins(PTA,1<<15);//将PTA15设置为低//PINS_DRV_ClearPins(PTE,1<<6);//将PTE6设置为低}/*** Don't write any code pass this line, or it will be deleted during code generation. ***//*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/#ifdef PEX_RTOS_STARTPEX_RTOS_START();                  /* Startup of the selected RTOS. Macro is defined by the RTOS component. */#endif/*** End of RTOS startup code.  ***//*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/for(;;) {if(exit_code != 0) {break;}}return exit_code;/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

3,常用函数介绍


1,初始化函数
/*FUNCTION************************************************************************ Function Name : PINS_DRV_Init* Description   : This function configures the pins with the options provided* in the given structure.** Implements    : PINS_DRV_Init_Activity*END**************************************************************************/
status_t PINS_DRV_Init(uint32_t pinCount,const pin_settings_config_t config[])
{uint32_t i;for (i = 0U; i < pinCount; i++){PINS_Init(&config[i]);}return STATUS_SUCCESS;
}2,将GPIO输出置高
/*FUNCTION************************************************************************ Function Name : PINS_DRV_SetPins* Description   : This function configures output pins listed in parameter pins (bits that are* '1') to have a value of 'set' (HIGH). Pins corresponding to '0' will be* unaffected.** Implements    : PINS_DRV_SetPins_Activity*END**************************************************************************/
void PINS_DRV_SetPins(GPIO_Type * const base,pins_channel_type_t pins)
{PINS_GPIO_SetPins(base, pins);
}3,将GPIO输出置低
/*FUNCTION************************************************************************ Function Name : PINS_DRV_ClearPins* Description   : This function configures output pins listed in parameter pins (bits that are* '1') to have a 'cleared' value (LOW). Pins corresponding to '0' will be* unaffected.** Implements    : PINS_DRV_ClearPins_Activity*END**************************************************************************/
void PINS_DRV_ClearPins(GPIO_Type * const base,pins_channel_type_t pins)
{PINS_GPIO_ClearPins(base, pins);
}4,将GPIO状态输出反转
/*FUNCTION************************************************************************ Function Name : PINS_DRV_TogglePins* Description   : This function toggles output pins listed in parameter pins (bits that are* '1'). Pins corresponding to '0' will be unaffected.** Implements    : PINS_DRV_TogglePins_Activity*END**************************************************************************/
void PINS_DRV_TogglePins(GPIO_Type * const base,pins_channel_type_t pins)
{PINS_GPIO_TogglePins(base, pins);
}5,输入时,读取GPIO状态
/*FUNCTION************************************************************************ Function Name : PINS_DRV_ReadPins* Description   : This function returns the current input values from a port. Only pins* configured as input will have meaningful values.** Implements    : PINS_DRV_ReadPins_Activity*END**************************************************************************/
pins_channel_type_t PINS_DRV_ReadPins(const GPIO_Type * const base)
{return PINS_GPIO_ReadPins(base);
}

/* Initialize pins
   *    -    See PinSettings component for more info
 */

 //GPIO初始化
  PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);

  /* Output direction for LED0 & LED1 */
  PINS_DRV_SetPinsDirection(PTA, (1 << 15)|(1 << 14));

  /* Set Output value LED0 & LED1 */
  PINS_DRV_SetPins(PTA, (1 << 15)|(1 << 14));  
  PINS_DRV_ClearPins(PTA, (1 << 15)|(1 << 14));

        uint32_t gpio_state=PINS_DRV_ReadPins(PTD);if(gpio_state&((1<<8)|(1<<9)|(1<<10)|(1<<11)|(1<<12)))//5个引脚输入口{PINS_DRV_ClearPins(PTA, 1 << 15);}else{PINS_DRV_SetPins(PTA, 1 << 15);}

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...