hi,
i am using FRDMk64 controller. KDS2.0 and ksdk 1.1.0 version. i am using MQX example.
i want to make
PORTC -7th pin as input
PORTC -8th pin as OUTPUT
how to do that one.
using following API i made as general input/output pin
PORT_HAL_SetMuxMode(PORTC_BASE,7u,kPortMuxAsGpio);
but how to mention INPUT PIN or OUTPUT PIN (i am asking about Direction of pin)
how to mention direction of PIN?
Solved! Go to Solution.
Hi Thiva,
I got bitten too. Have to be careful to look at the API calls to make sure correct PORT (PTE) or GPIO (PORTE) registers being referenced.
Example that should work:
#if 1 | //DES 1=customer test code, 0=default code |
PORT_HAL_SetMuxMode((PORT_Type *)PORTE,26u,kPortMuxAsGpio);//dtr output
PORT_HAL_SetOpenDrainCmd((PORT_Type *)PORTE,26u, 1); | //DES added...FRDM-K64F can use open drain since LED pulled high |
GPIO_HAL_SetPinDir((GPIO_Type *)PTE,26u,kGpioDigitalOutput);
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added |
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,0);//MAKE DTR low
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,0);//MAKE DTR low
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
#endif
Regards,
David
Hi thiva p,
for example:
GPIO_HAL_SetPinDir(GPIOC_BASE, 7, kGpioDigitalInput);
GPIO_HAL_SetPinDir(GPIOC_BASE, 8, kGpioDigitalOutput);
I hope it helps you.
Have a great day,
RadekS
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
hi,
i tried same way but its not working,
i tried following step
PORT_HAL_SetMuxMode(PORTE_BASE,26u,kPortMuxAsGpio);//dtr output
GPIO_HAL_SetPinDir(PORTE_BASE,26u,kGpioDigitalOutput);
GPIO_HAL_WritePinOutput (PORTE_BASE,26,0);//MAKE DTR low
when i measured with multi-meter i am getting always PORTE-26 pin as high only. (i am getting 3V).
why its not going to ZERO (low) volt.
thanks and regards
thiva
Hi Thiva,
I got bitten too. Have to be careful to look at the API calls to make sure correct PORT (PTE) or GPIO (PORTE) registers being referenced.
Example that should work:
#if 1 | //DES 1=customer test code, 0=default code |
PORT_HAL_SetMuxMode((PORT_Type *)PORTE,26u,kPortMuxAsGpio);//dtr output
PORT_HAL_SetOpenDrainCmd((PORT_Type *)PORTE,26u, 1); | //DES added...FRDM-K64F can use open drain since LED pulled high |
GPIO_HAL_SetPinDir((GPIO_Type *)PTE,26u,kGpioDigitalOutput);
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added | |
GPIO_HAL_TogglePortOutput((GPIO_Type *)PTE,(1<<26u)); | //DES added |
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,0);//MAKE DTR low
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,0);//MAKE DTR low
GPIO_HAL_WritePinOutput ((GPIO_Type *)PTE,26u,1);//MAKE DTR high
#endif
Regards,
David