HVAC_M7_Lins/Lins.c

77 lines
2.1 KiB
C

//
// Created by Cfif on 14.12.23.
//
#include <stdbool.h>
#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;
}