You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.8 KiB
84 lines
2.8 KiB
#include "port.h"
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
|
|
#include "main.h"
|
|
// #include "modbus_processer.h"
|
|
#include "tim.h"
|
|
#include "usart.h"
|
|
|
|
//
|
|
#include "../../../iflytop_microcontroller/sdk/stm32/pwm.h"
|
|
#include "../../../iflytop_microcontroller/sdk/stm32/stm32sdk.h"
|
|
|
|
/**********************************************************************************************************************
|
|
* ===================================================printf重定向=================================================== *
|
|
**********************************************************************************************************************/
|
|
int fputc(int ch, FILE* stream) {
|
|
uint8_t c = ch;
|
|
HAL_UART_Transmit(&DEBUG_UART, &c, 1, 100);
|
|
return ch;
|
|
}
|
|
/***********************************************************************************************************************
|
|
* ====================================================调试指示灯===================================================== *
|
|
***********************************************************************************************************************/
|
|
void port_do_debug_light_state(void) {
|
|
static uint32_t lastprocess = 0;
|
|
if (sys_haspassedms(lastprocess) > 300) {
|
|
lastprocess = HAL_GetTick();
|
|
HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN);
|
|
}
|
|
}
|
|
/***********************************************************************************************************************
|
|
* =====================================================串口相关====================================================== *
|
|
***********************************************************************************************************************/
|
|
|
|
static uart_t m_uarts[] = {
|
|
{&DEBUG_UART, 0},
|
|
// {&MODBUS_UART, 0},
|
|
};
|
|
__weak void port_mock_on_uart_rx(uart_t* uart) {}
|
|
static void uarts_start_receive(uart_t* uart) { HAL_UART_Receive_IT(uart->uarthandler, &uart->rxbuf, 1); }
|
|
void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) {
|
|
for (size_t i = 0; i < sizeof(m_uarts) / sizeof(uart_t); i++) {
|
|
if (m_uarts[i].uarthandler == huart) {
|
|
port_mock_on_uart_rx(&m_uarts[i]);
|
|
uarts_start_receive(&m_uarts[i]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
void HAL_UART_ErrorCallback(UART_HandleTypeDef* huart) {
|
|
for (size_t i = 0; i < sizeof(m_uarts) / sizeof(uart_t); i++) {
|
|
if (m_uarts[i].uarthandler == huart) {
|
|
uarts_start_receive(&m_uarts[i]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
// export
|
|
void port_uart_start_all_uart_receive(void) {
|
|
for (size_t i = 0; i < sizeof(m_uarts) / sizeof(uart_t); i++) {
|
|
uarts_start_receive(&m_uarts[i]);
|
|
}
|
|
}
|
|
|
|
bool port_electric_relay_get_state(int relayindex) {
|
|
/*
|
|
example:
|
|
if (relayindex == 1) {
|
|
return GPIO_GET(C, 8, !!);
|
|
}
|
|
*/
|
|
|
|
return false;
|
|
}
|
|
void port_electric_relay_set_state(int relayindex, bool state) {
|
|
/*
|
|
example:
|
|
if (relayindex == 1) {
|
|
GPIO_SET(C, 8, !!, state);
|
|
}
|
|
*/
|
|
}
|