// // Created by Cfif on 14.12.23. // #include #include "fc7xxx_driver_port.h" #include "fc7xxx_driver_gpio.h" #include "Lins.h" tLinPorts LIN_PORTS; static void Lin0CallbackHandler(uint8_t u8LinIndex, void *state) { LIN_PORTS.lin0.LinExtCallbackHandler(LIN_PORTS.lin0.envCallExtBack, u8LinIndex, state); } void FCUART4_RxTx_IRQHandler(void) { LIN_DrvIRQHandler(LIN_PORTS.lin0.UART_INDEX); } tLinData* Lin0_Init(lin_callback_ext_t Lin_ExtCallbackHandler, void *Lin_envCallExtBack) { tLinPorts *env = &LIN_PORTS; PORT_InitType tInitStruct = {0}; GPIO_InitType tGpioInitStruct = {0}; /* Port D12: MUX = ALT3, UART4_RX */ tInitStruct.u32PortPins = PORT_PIN_12; tInitStruct.uPortPinMux.u32PortPinMode = PORTD_12_FCUART4_RX; tInitStruct.bPullEn = true; tInitStruct.ePullSel = PORT_PULL_UP; PORT_InitPins(PORT_D, &tInitStruct); tGpioInitStruct.u32GpioPins = GPIO_PIN_12; tGpioInitStruct.ePinDirection = GPIO_IN; GPIO_InitPins(GPIO_D, &tGpioInitStruct); /* Port D5: MUX = ALT3, UART4_TX */ tInitStruct.u32PortPins = PORT_PIN_5; tInitStruct.uPortPinMux.u32PortPinMode = PORTD_5_FCUART4_TX; PORT_InitPins(PORT_D, &tInitStruct); tGpioInitStruct.u32GpioPins = GPIO_PIN_5; tGpioInitStruct.ePinDirection = GPIO_OUT; tGpioInitStruct.ePinLevel = GPIO_HIGH; GPIO_InitPins(GPIO_D, &tGpioInitStruct); /* Port D18: MUX = GPIO output */ //tInitStruct.u32PortPins = PORT_PIN_18; //tInitStruct.uPortPinMux.u32PortPinMode = PORT_GPIO_MODE; //PORT_InitPins(PORT_D, &tInitStruct); //tGpioInitStruct.u32GpioPins = GPIO_PIN_18; //tGpioInitStruct.ePinDirection = GPIO_OUT; //tGpioInitStruct.ePinLevel = GPIO_HIGH; //GPIO_InitPins(GPIO_D, &tGpioInitStruct); LIN_Initial( &env->lin0, FCUART4, 9600, 4, // UART0 = 0 ... UART7 = 7 FCUART4_IRQn, // FCUART0_IRQn ... FCUART7_IRQn 0xFF, NULL, Lin0CallbackHandler, Lin_ExtCallbackHandler, Lin_envCallExtBack ); env->lin0_Io = vLinGetIo(&env->lin0); return &env->lin0.linData; }