Files
Michael Sauer 1b0501179d build: W600-SDK importiert, Firmware-Build und Hello am EVK
Docker-Build mit gcc-arm-none-eabi 4.9-2014q4 (statt Homebrew-Cask) verwendet,
Dockerfile/tools/docker.sh dafür aus Task 13 vorgezogen. cmake/sdk.cmake schont
gcc 4.9 (kennt -fcommon/-Wno-error=... nicht). Zwei zusätzliche SDK-Stubs
(EarlyInit, pre_gpio_config) in src/sys/sdk_stubs.c ergänzt, siehe sdk/PATCHES.md.
2026-09-11 12:52:26 +02:00

139 lines
2.9 KiB
C

/*****************************************************************************
*
* File Name : wm_iouart.h
*
* Description: IO uart Driver Module
*
* Copyright (c) 2014 Winner Microelectronics Co., Ltd.
* All rights reserved.
*
* Author : dave
*
* Date : 2015-8-13
*****************************************************************************/
#ifndef WM_IO_UART_H
#define WM_IO_UART_H
#include "wm_uart.h"
#include "wm_io.h"
#define IO_UART_FOR_PRINT 0
#define IO_UART_TX WM_IO_PB_08
#define IO_UART_RX WM_IO_PB_09
#define IO_UART_HIGH 1
#define IO_UART_LOW 0
#define TLS_IO_UART_RX_BUF_SIZE 1024
#define TLS_IO_UART_TX_BUF_SIZE 1024
#define IO_UART_RATE_MUL 8 //采样率=该值*波特率
#define IO_UART_ONEBITE_SAMPLE_NUM 2
#define IO_UART_ONEBYTE_BIT 10
typedef struct tls_io_uart{
struct tls_uart_circ_buf recv;
int timercnt;
u8 bit[IO_UART_ONEBITE_SAMPLE_NUM]; //每个bit采样3次,然后判断高低电平
u8 bitcnt; //单个bit采样次数
u8 bitnum; //bit号,一个byte共有10个bit(1个起始位+8个数据位+1个停止位)
u8 ifrx; //是否正在rx
u8 iftx; //是否正在tx
u8 timerid;
}tls_io_uart_t;
/**
* @defgroup Driver_APIs Driver APIs
* @brief Driver APIs
*/
/**
* @addtogroup Driver_APIs
* @{
*/
/**
* @defgroup IOUART_Driver_APIs IOUART Driver APIs
* @brief IOUART driver APIs
*/
/**
* @addtogroup IOUART_Driver_APIs
* @{
*/
/**
* @brief This function is used to initialize uart io
*
* @param[in] bandrate iouart baudrate
*
* @return WM_SUCCESS success
* @return WM_FAILED fail
*
* @note None
*/
int tls_iouart_init(int bandrate);
/**
* @brief This function is used to restore uart io cfg
*
* @param[in] None
*
* @return WM_SUCCESS success
*
* @note None
*/
int tls_iouart_destroy(void);
/**
* @brief This function is used to read data from uart io
*
* @param[in] buf is the user buffer
* @param[in] readsize is the user read size
*
* @return >0 copy data size
* @return WM_FAILED fail
*
* @note None
*/
int tls_iouart_read(u8 * buf, int bufsize);
/**
* @brief This function is used to transfer data synchronously.
*
* @param[in] buf is a buf for saving user data
* @param[in] writesize is the user data length
*
* @retval WM_SUCCESS tx success
* @retval WM_FAILED tx failed
*
* @note None
*/
int tls_iouart_write(u8 * buf, int bufsize);
/**
* @brief This function is used to output a character to the serial port.
*
* @param[in] ch character to be output
*
* @retval ch
*
* @note None
*/
int tls_iouart_output_char(int ch);
/**
* @}
*/
/**
* @}
*/
#endif /* WM_IO_UART_H */