2022-03-28 17:19:25 +08:00

75 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <stdio.h>
#include <string.h>
#include "wm_hal.h"
#include "fifo.h"
UART_HandleTypeDef huart1;
static void UART1_Init(void);
void Error_Handler(void);
#define IT_LEN 0 // 大于等于00接收不定长数据即可触发中断回调大于0接收N个长度数据才触发中断回调
static uint8_t buf[32] = {0}; // 必须大于等于32字节
#define LEN 2048
static uint8_t pdata[LEN] = {0};
int main(void)
{
volatile int tx_len = 0;
uint8_t tx_buf[100] = {0};
SystemClock_Config(CPU_CLK_160M);
printf("enter main\r\n");
UART1_Init();
FifoInit(pdata, LEN);
HAL_UART_Receive_IT(&huart1, buf, IT_LEN); // 只需调用一次,接收够设定的长度,进入中断回调,用户需要在中断回调中取走数据,此处设置了
// 0个字节即不定长
while(1)
{
tx_len = FifoDataLen();
if (tx_len > 0)
{
tx_len = (tx_len > 100) ? 100 : tx_len;
FifoRead(tx_buf, tx_len);
HAL_UART_Transmit(&huart1, tx_buf, tx_len, 1000);
}
}
return 0;
}
static void UART1_Init(void)
{
huart1.Instance = UART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX | UART_MODE_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (FifoSpaceLen() >= huart->RxXferCount)
{
FifoWrite(huart->pRxBuffPtr, huart->RxXferCount);
}
}
void Error_Handler(void)
{
while (1)
{
}
}
void assert_failed(uint8_t *file, uint32_t line)
{
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
}