修复Yoda条件(常量右置)与函数定义括号同行
- net_select.c/net_socket.c 共 62 处 Yoda 条件改为常量在右(规范 6.3.1) - 11 个文件 58 处函数定义左大括号由换行改为与右括号同行(规范 4.4.2)
This commit is contained in:
@@ -60,12 +60,12 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
int i;
|
||||
|
||||
/* 检查输入参数合法性 */
|
||||
if ((0 >= nfds) || (NET_MAX_SOCKETS < nfds)) {
|
||||
if ((nfds <= 0) || (nfds > NET_MAX_SOCKETS)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 计算超时时间(毫秒) */
|
||||
if (NULL != timeout) {
|
||||
if (timeout != NULL) {
|
||||
timeout_ms = (uint32_t)(timeout->tv_sec * 1000) +
|
||||
(uint32_t)(timeout->tv_usec / 1000);
|
||||
}
|
||||
@@ -80,12 +80,12 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
for (i = 0; i < nfds && i < NET_MAX_SOCKETS; i++) {
|
||||
const net_sock_t *p_sock = net_get_sock(i);
|
||||
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* 检查可读事件 */
|
||||
if ((NULL != readfds) && NET_FD_ISSET(i, readfds)) {
|
||||
if ((readfds != NULL) && NET_FD_ISSET(i, readfds)) {
|
||||
if (check_socket_readable(i)) {
|
||||
NET_FD_SET(i, &result_read);
|
||||
ready_count++;
|
||||
@@ -93,7 +93,7 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
}
|
||||
|
||||
/* 检查可写事件 */
|
||||
if ((NULL != writefds) && NET_FD_ISSET(i, writefds)) {
|
||||
if ((writefds != NULL) && NET_FD_ISSET(i, writefds)) {
|
||||
if (check_socket_writable(i)) {
|
||||
NET_FD_SET(i, &result_write);
|
||||
ready_count++;
|
||||
@@ -101,7 +101,7 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
}
|
||||
|
||||
/* 检查异常事件 */
|
||||
if ((NULL != exceptfds) && NET_FD_ISSET(i, exceptfds)) {
|
||||
if ((exceptfds != NULL) && NET_FD_ISSET(i, exceptfds)) {
|
||||
if (check_socket_error(i)) {
|
||||
NET_FD_SET(i, &result_except);
|
||||
ready_count++;
|
||||
@@ -110,13 +110,13 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
}
|
||||
|
||||
/* 有事件就绪,返回 */
|
||||
if (0 < ready_count) {
|
||||
if (ready_count > 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* 超时检测 */
|
||||
if (NULL != timeout) {
|
||||
if ((0 < timeout_ms) &&
|
||||
if (timeout != NULL) {
|
||||
if ((timeout_ms > 0) &&
|
||||
((HAL_GetTick() - start_tick) >= timeout_ms)) {
|
||||
break; /* 超时返回 0 */
|
||||
}
|
||||
@@ -127,13 +127,13 @@ int net_select(int nfds, net_fd_set_t *readfds, net_fd_set_t *writefds,
|
||||
}
|
||||
|
||||
/* 复制结果集合 */
|
||||
if (NULL != readfds) {
|
||||
if (readfds != NULL) {
|
||||
readfds->fd_bits = result_read.fd_bits;
|
||||
}
|
||||
if (NULL != writefds) {
|
||||
if (writefds != NULL) {
|
||||
writefds->fd_bits = result_write.fd_bits;
|
||||
}
|
||||
if (NULL != exceptfds) {
|
||||
if (exceptfds != NULL) {
|
||||
exceptfds->fd_bits = result_except.fd_bits;
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ int net_poll_events(net_pollfd_t *fds, int nfds, int timeout) {
|
||||
int ready = 0;
|
||||
int i;
|
||||
|
||||
if ((NULL == fds) || (0 >= nfds)) {
|
||||
if ((fds == NULL) || (nfds <= 0)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ int net_poll_events(net_pollfd_t *fds, int nfds, int timeout) {
|
||||
fds[i].revents = 0;
|
||||
|
||||
/* 检查 fd 有效性 */
|
||||
if ((0 > fds[i].fd) || (NET_MAX_SOCKETS <= fds[i].fd)) {
|
||||
if ((fds[i].fd < 0) || (fds[i].fd >= NET_MAX_SOCKETS)) {
|
||||
fds[i].revents |= NET_POLLNVAL;
|
||||
ready++;
|
||||
continue;
|
||||
@@ -180,7 +180,7 @@ int net_poll_events(net_pollfd_t *fds, int nfds, int timeout) {
|
||||
|
||||
const net_sock_t *p_sock = net_get_sock(fds[i].fd);
|
||||
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
fds[i].revents |= NET_POLLNVAL;
|
||||
ready++;
|
||||
continue;
|
||||
@@ -215,12 +215,12 @@ int net_poll_events(net_pollfd_t *fds, int nfds, int timeout) {
|
||||
}
|
||||
}
|
||||
|
||||
if (0 < ready) {
|
||||
if (ready > 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* 超时检测 */
|
||||
if (0 <= timeout) {
|
||||
if (timeout >= 0) {
|
||||
if ((HAL_GetTick() - start_tick) >= (uint32_t)timeout) {
|
||||
break;
|
||||
}
|
||||
@@ -250,7 +250,7 @@ static int check_socket_readable(int sockfd) {
|
||||
const net_sock_t *p_sock;
|
||||
|
||||
p_sock = net_get_sock(sockfd);
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ static int check_socket_writable(int sockfd) {
|
||||
const net_sock_t *p_sock;
|
||||
|
||||
p_sock = net_get_sock(sockfd);
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -307,12 +307,12 @@ static int check_socket_error(int sockfd) {
|
||||
const net_sock_t *p_sock;
|
||||
|
||||
/* 无效 fd 视为错误 */
|
||||
if ((0 > sockfd) || (NET_MAX_SOCKETS <= sockfd)) {
|
||||
if ((sockfd < 0) || (sockfd >= NET_MAX_SOCKETS)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
p_sock = net_get_sock(sockfd);
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
return 1; /* 未使用的 Socket 视为错误 */
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ int net_init(const char *ip, const char *mask, const char *gateway) {
|
||||
ch395f_set_keepalive_cnt(3); /* 最多探 3 次*/
|
||||
|
||||
/* 设置网络参数(必须在 INIT_CH395 之前调用 */
|
||||
if (NULL != ip) {
|
||||
if (ip != NULL) {
|
||||
uint8_t ip_arr[4];
|
||||
uint8_t mask_arr[4];
|
||||
uint8_t gw_arr[4];
|
||||
@@ -300,7 +300,7 @@ int net_poll(void) {
|
||||
void net_process_messages(void) {
|
||||
net_msg_t msg;
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -308,7 +308,7 @@ void net_process_messages(void) {
|
||||
switch (msg.type) {
|
||||
case NET_MSG_SEND: {
|
||||
net_sock_t *p_sock = net_get_sock(msg.sockfd);
|
||||
if (NULL == p_sock || p_sock->state != NET_SOCK_STATE_ESTABLISHED) {
|
||||
if (p_sock == NULL || p_sock->state != NET_SOCK_STATE_ESTABLISHED) {
|
||||
msg.result = -1;
|
||||
} else {
|
||||
msg.result = net_send_locked(p_sock, msg.buf, msg.len);
|
||||
@@ -317,7 +317,7 @@ void net_process_messages(void) {
|
||||
}
|
||||
case NET_MSG_RECV: {
|
||||
net_sock_t *p_sock = net_get_sock(msg.sockfd);
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
msg.result = -1;
|
||||
} else {
|
||||
msg.result = net_recv_locked(p_sock, msg.buf, msg.len, msg.flags);
|
||||
@@ -326,7 +326,7 @@ void net_process_messages(void) {
|
||||
}
|
||||
case NET_MSG_CLOSE: {
|
||||
net_sock_t *p_sock = net_get_sock(msg.sockfd);
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
msg.result = -1;
|
||||
} else {
|
||||
msg.result = net_close_locked(p_sock);
|
||||
@@ -346,7 +346,7 @@ void net_process_messages(void) {
|
||||
case NET_MSG_ACCEPT: {
|
||||
struct net_sockaddr *p_addr = (struct net_sockaddr *)msg.buf;
|
||||
int addrlen = msg.len;
|
||||
int *p_addrlen = (NULL != p_addr && addrlen > 0) ? &addrlen : NULL;
|
||||
int *p_addrlen = (p_addr != NULL && addrlen > 0) ? &addrlen : NULL;
|
||||
msg.result = net_accept_locked(msg.sockfd, p_addr, p_addrlen);
|
||||
break;
|
||||
}
|
||||
@@ -423,7 +423,7 @@ int net_bind(int sockfd, const struct net_sockaddr *addr, int addrlen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == addr || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
if (addr == NULL || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -567,7 +567,7 @@ int net_listen(int sockfd) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR;
|
||||
return -1;
|
||||
}
|
||||
@@ -627,7 +627,7 @@ static int net_accept_locked(int sockfd, struct net_sockaddr *addr, int *addrlen
|
||||
}
|
||||
|
||||
/* 填充对端地址(若调用方需要) */
|
||||
if (NULL != addr && NULL != addrlen) {
|
||||
if (addr != NULL && addrlen != NULL) {
|
||||
struct net_sockaddr_in *p_addr_in = (struct net_sockaddr_in *)addr;
|
||||
p_addr_in->sin_family = NET_AF_INET;
|
||||
p_addr_in->sin_port = net_htons(p_listen_sock->remote_port);
|
||||
@@ -656,7 +656,7 @@ int net_accept(int sockfd, struct net_sockaddr *addr, int *addrlen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR;
|
||||
return -1;
|
||||
}
|
||||
@@ -664,7 +664,7 @@ int net_accept(int sockfd, struct net_sockaddr *addr, int *addrlen) {
|
||||
msg.type = NET_MSG_ACCEPT;
|
||||
msg.sockfd = sockfd;
|
||||
msg.buf = (void *)addr;
|
||||
msg.len = (NULL != addrlen) ? *addrlen : 0;
|
||||
msg.len = (addrlen != NULL) ? *addrlen : 0;
|
||||
msg.caller = xTaskGetCurrentTaskHandle();
|
||||
msg.result = -1;
|
||||
|
||||
@@ -679,7 +679,7 @@ int net_accept(int sockfd, struct net_sockaddr *addr, int *addrlen) {
|
||||
msg.result = (int)s_notified;
|
||||
}
|
||||
|
||||
if (NULL != addrlen &&NULL != addr) {
|
||||
if (addrlen != NULL &&addr != NULL) {
|
||||
*addrlen = sizeof(struct net_sockaddr_in);
|
||||
}
|
||||
|
||||
@@ -709,12 +709,12 @@ int net_connect(int sockfd, const struct net_sockaddr *addr, int addrlen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == addr || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
if (addr == NULL || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -767,7 +767,7 @@ static int net_connect_locked(int sockfd, const struct net_sockaddr *addr, int a
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == addr || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
if (addr == NULL || addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -865,7 +865,7 @@ static int net_send_locked(net_sock_t *p_sock, const void *buf, int len) {
|
||||
uint32_t tick_start;
|
||||
int sockfd = (int)(p_sock - s_net_socks);
|
||||
|
||||
if (NULL == buf || len <= 0) {
|
||||
if (buf == NULL || len <= 0) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -928,7 +928,7 @@ static int net_recv_locked(net_sock_t *p_sock, void *buf, int len, int flags) {
|
||||
uint32_t tick_start;
|
||||
int sockfd = (int)(p_sock - s_net_socks);
|
||||
|
||||
if (NULL == buf || len <= 0) {
|
||||
if (buf == NULL || len <= 0) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -1117,7 +1117,7 @@ int net_send(int sockfd, const void *buf, int len, int flags) {
|
||||
}
|
||||
|
||||
/* ---- 2. 运行环境检查:消息队列须已创建(网络层已初始化) ---- */
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR; /* 网络层未初始化 */
|
||||
return -1;
|
||||
}
|
||||
@@ -1172,7 +1172,7 @@ int net_recv(int sockfd, void *buf, int len, int flags) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR;
|
||||
return -1;
|
||||
}
|
||||
@@ -1219,7 +1219,7 @@ int net_close(int sockfd) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == netMsgQueueHandle) {
|
||||
if (netMsgQueueHandle == NULL) {
|
||||
s_net_errno = NET_ERR;
|
||||
return -1;
|
||||
}
|
||||
@@ -1277,13 +1277,13 @@ int net_sendto(int sockfd, const void *buf, int len, int flags,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == buf || len <= 0) {
|
||||
if (buf == NULL || len <= 0) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* UDP 模式:设置目标地址 */
|
||||
if (NULL != dest_addr && addrlen >= (int)sizeof(struct net_sockaddr_in)) {
|
||||
if (dest_addr != NULL && addrlen >= (int)sizeof(struct net_sockaddr_in)) {
|
||||
p_addr_in = (const struct net_sockaddr_in *)dest_addr;
|
||||
|
||||
/* 转换 IP 为大端数组(同 TCP 客户端,set_des_ip 期望大端) */
|
||||
@@ -1365,7 +1365,7 @@ int net_recvfrom(int sockfd, void *buf, int len, int flags,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == buf || len <= 0) {
|
||||
if (buf == NULL || len <= 0) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
@@ -1384,7 +1384,7 @@ int net_recvfrom(int sockfd, void *buf, int len, int flags,
|
||||
recv_len -= 8;
|
||||
|
||||
/* 填充来源地址 */
|
||||
if (NULL != src_addr &&NULL != addrlen &&
|
||||
if (src_addr != NULL &&addrlen != NULL &&
|
||||
*addrlen >= (int)sizeof(struct net_sockaddr_in)) {
|
||||
struct net_sockaddr_in *p_addr_in = (struct net_sockaddr_in *)src_addr;
|
||||
p_addr_in->sin_family = NET_AF_INET;
|
||||
@@ -1436,7 +1436,7 @@ int net_recvfrom(int sockfd, void *buf, int len, int flags,
|
||||
* 函数说明:直接调用 net_send_locked 完成发送
|
||||
*/
|
||||
int net_send_sock(net_sock_t *p_sock, const void *buf, int len) {
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
s_net_errno = NET_ERR_BADF;
|
||||
return -1;
|
||||
}
|
||||
@@ -1455,7 +1455,7 @@ int net_send_sock(net_sock_t *p_sock, const void *buf, int len) {
|
||||
* 函数说明:直接操作 Socket 控制块,不经过消息队列。避免 netTask 向自身发送消息造成死锁
|
||||
*/
|
||||
int net_recv_sock(net_sock_t *p_sock, void *buf, int len, int flags) {
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
s_net_errno = NET_ERR_BADF;
|
||||
return -1;
|
||||
}
|
||||
@@ -1470,7 +1470,7 @@ int net_recv_sock(net_sock_t *p_sock, void *buf, int len, int flags) {
|
||||
* 函数说明:直接操作 Socket 控制块,不经过消息队列。TCP Socket 先断开连接再释放控制块
|
||||
*/
|
||||
int net_close_sock(net_sock_t *p_sock) {
|
||||
if (NULL == p_sock) {
|
||||
if (p_sock == NULL) {
|
||||
s_net_errno = NET_ERR_BADF;
|
||||
return -1;
|
||||
}
|
||||
@@ -1530,7 +1530,7 @@ uint32_t net_inet_addr(const char *cp) {
|
||||
uint32_t addr = 0;
|
||||
int i;
|
||||
|
||||
if (NULL == cp) {
|
||||
if (cp == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1561,7 +1561,7 @@ uint32_t net_inet_addr(const char *cp) {
|
||||
char *net_inet_ntoa(uint32_t addr, char *buf) {
|
||||
uint32_t naddr = NET_NTOHL(addr);
|
||||
|
||||
if (NULL == buf) {
|
||||
if (buf == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1787,7 +1787,7 @@ static void handle_timeout_event(net_sock_t *p_sock) {
|
||||
* 2. 回调参数为 ch395_sock、event、event_arg
|
||||
*/
|
||||
static void fire_event(net_sock_t *p_sock, net_event_t event) {
|
||||
if (NULL != p_sock->event_cb) {
|
||||
if (p_sock->event_cb != NULL) {
|
||||
p_sock->event_cb(p_sock->ch395_sock, event, p_sock->event_arg);
|
||||
}
|
||||
}
|
||||
@@ -1805,7 +1805,7 @@ static void fire_event(net_sock_t *p_sock, net_event_t event) {
|
||||
static void parse_ip_string(const char *str, uint8_t *ip_arr) {
|
||||
int i;
|
||||
|
||||
if (NULL == str ||NULL == ip_arr) {
|
||||
if (str == NULL ||ip_arr == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1864,7 +1864,7 @@ int net_getsockname(int sockfd, struct net_sockaddr *addr, int *addrlen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL == addr ||NULL == addrlen || *addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
if (addr == NULL ||addrlen == NULL || *addrlen < (int)sizeof(struct net_sockaddr_in)) {
|
||||
s_net_errno = NET_ERR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -40,8 +40,7 @@ rs485_handle_t g_rs485;
|
||||
void rs485_init(rs485_handle_t *p_handle,
|
||||
UART_HandleTypeDef *p_huart,
|
||||
GPIO_TypeDef *p_dir_port,
|
||||
uint16_t dir_pin)
|
||||
{
|
||||
uint16_t dir_pin) {
|
||||
p_handle->huart = p_huart;
|
||||
p_handle->dir_port = p_dir_port;
|
||||
p_handle->dir_pin = dir_pin;
|
||||
@@ -71,8 +70,7 @@ void rs485_init(rs485_handle_t *p_handle,
|
||||
HAL_StatusTypeDef rs485_transmit(rs485_handle_t *p_handle,
|
||||
const uint8_t *p_data,
|
||||
uint16_t len,
|
||||
uint32_t timeout)
|
||||
{
|
||||
uint32_t timeout) {
|
||||
HAL_StatusTypeDef status = HAL_OK;
|
||||
|
||||
if (timeout == 0U) {
|
||||
@@ -106,8 +104,7 @@ HAL_StatusTypeDef rs485_transmit(rs485_handle_t *p_handle,
|
||||
* HAL 自动调用 HAL_UARTEx_RxEventCallback 并返回已接收字节数。
|
||||
* 用户须在回调中重新调用本函数重新开启接收。
|
||||
*/
|
||||
HAL_StatusTypeDef rs485_receive_start(rs485_handle_t *p_handle)
|
||||
{
|
||||
HAL_StatusTypeDef rs485_receive_start(rs485_handle_t *p_handle) {
|
||||
p_handle->rx_size = 0;
|
||||
return HAL_UARTEx_ReceiveToIdle_IT(p_handle->huart, p_handle->rx_buf, RS485_RX_BUF_SIZE);
|
||||
}
|
||||
@@ -120,8 +117,7 @@ HAL_StatusTypeDef rs485_receive_start(rs485_handle_t *p_handle)
|
||||
* 限定条件:须在 HAL_UARTEx_RxEventCallback 中调用
|
||||
* 函数说明:将 HAL 回调中接收到的数据大小回写到句柄的 rx_size 字段
|
||||
*/
|
||||
void rs485_rx_set_size(rs485_handle_t *p_handle, uint16_t size)
|
||||
{
|
||||
void rs485_rx_set_size(rs485_handle_t *p_handle, uint16_t size) {
|
||||
p_handle->rx_size = size;
|
||||
}
|
||||
|
||||
@@ -132,8 +128,7 @@ void rs485_rx_set_size(rs485_handle_t *p_handle, uint16_t size)
|
||||
* 限定条件:须在 HAL_UARTEx_RxEventCallback 触发后调用
|
||||
* 函数说明:获取 rx_size 字段中缓存的接收字节数
|
||||
*/
|
||||
uint16_t rs485_rx_get_size(const rs485_handle_t *p_handle)
|
||||
{
|
||||
uint16_t rs485_rx_get_size(const rs485_handle_t *p_handle) {
|
||||
return p_handle->rx_size;
|
||||
}
|
||||
|
||||
@@ -143,8 +138,7 @@ uint16_t rs485_rx_get_size(const rs485_handle_t *p_handle)
|
||||
* 应用层接收钩子默认实现(弱符号,可被应用重定义)。
|
||||
* 在中断上下文调用,仅做占位,业务解析由应用提供。
|
||||
*/
|
||||
__weak void rs485_on_rx(uint8_t *buf, uint16_t size)
|
||||
{
|
||||
__weak void rs485_on_rx(uint8_t *buf, uint16_t size) {
|
||||
(void)buf;
|
||||
(void)size;
|
||||
}
|
||||
@@ -154,8 +148,7 @@ __weak void rs485_on_rx(uint8_t *buf, uint16_t size)
|
||||
* 当 RS-485 总线空闲超过 1 个字符时间后触发,由 HAL 自动调用。
|
||||
* 注意:回调按实例分发,仅处理本驱动绑定的 UART,不写死 UART5。
|
||||
*/
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
{
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) {
|
||||
if (huart == g_rs485.huart) {
|
||||
rs485_rx_set_size(&g_rs485, Size);
|
||||
|
||||
@@ -171,8 +164,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
* HAL UART 错误回调(ORE/NE/FE/PE 等)。
|
||||
* 读 SR + DR 清除错误标志后重新开启接收,避免中断锁死。
|
||||
*/
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) {
|
||||
if (huart == g_rs485.huart) {
|
||||
/* STM32F4 通过读 SR + DR 清除 ORE/NE/FE/PE 错误标志 */
|
||||
(void)huart->Instance->SR;
|
||||
|
||||
@@ -65,8 +65,7 @@ static void tpafe5160_read_channels(uint8_t count, int16_t *buf);
|
||||
* 2. 确保 RD 为高、CONVST 为低
|
||||
* 3. 等待 BUSY 释放(转换空闲)
|
||||
*/
|
||||
int tpafe5160_init(void)
|
||||
{
|
||||
int tpafe5160_init(void) {
|
||||
/* 设置默认过采样:无过采样 (OS[2:0] = 000) */
|
||||
tpafe5160_set_os(TPAFE5160_OS_NONE);
|
||||
|
||||
@@ -91,8 +90,7 @@ int tpafe5160_init(void)
|
||||
* 限定条件:GPIO 已初始化
|
||||
* 函数说明:通过 OS[2:0] 引脚设置过采样率,在下一次 BUSY 下降沿锁存生效
|
||||
*/
|
||||
void tpafe5160_set_os(tpafe5160_os_t os)
|
||||
{
|
||||
void tpafe5160_set_os(tpafe5160_os_t os) {
|
||||
TPAFE5160_OS0(os & 0x01); /* OS0 = bit0 */
|
||||
TPAFE5160_OS1((os >> 1) & 0x01); /* OS1 = bit1 */
|
||||
TPAFE5160_OS2((os >> 2) & 0x01); /* OS2 = bit2 */
|
||||
@@ -105,8 +103,7 @@ void tpafe5160_set_os(tpafe5160_os_t os)
|
||||
* 限定条件:GPIO 已初始化
|
||||
* 函数说明:产生 CONVST 脉冲上升沿,启动全部8通道同步采样与转换
|
||||
*/
|
||||
void tpafe5160_start_conv(void)
|
||||
{
|
||||
void tpafe5160_start_conv(void) {
|
||||
TPAFE5160_CONVST_PULSE();
|
||||
}
|
||||
|
||||
@@ -117,8 +114,7 @@ void tpafe5160_start_conv(void)
|
||||
* 限定条件:已调用 tpafe5160_start_conv()
|
||||
* 函数说明:轮询 BUSY 引脚等待下降沿
|
||||
*/
|
||||
int tpafe5160_wait_busy(uint32_t timeout_ms)
|
||||
{
|
||||
int tpafe5160_wait_busy(uint32_t timeout_ms) {
|
||||
uint32_t tick_start = HAL_GetTick();
|
||||
|
||||
/* 等待 BUSY 释放(低电平表示空闲) */
|
||||
@@ -138,8 +134,7 @@ int tpafe5160_wait_busy(uint32_t timeout_ms)
|
||||
* 限定条件:GPIO 已初始化
|
||||
* 函数说明:读取 BUSY 引脚电平
|
||||
*/
|
||||
uint8_t tpafe5160_is_busy(void)
|
||||
{
|
||||
uint8_t tpafe5160_is_busy(void) {
|
||||
return (TPAFE5160_BUSY_READ() == GPIO_PIN_SET) ? 1 : 0;
|
||||
}
|
||||
|
||||
@@ -152,8 +147,7 @@ uint8_t tpafe5160_is_busy(void)
|
||||
* 2. 连续8次拉低RD读取各通道数据
|
||||
* 3. 通过 FRSTDATA 验证第一通道
|
||||
*/
|
||||
int tpafe5160_read_all(int16_t *buf)
|
||||
{
|
||||
int tpafe5160_read_all(int16_t *buf) {
|
||||
int ret = 0;
|
||||
|
||||
/* 启动转换 */
|
||||
@@ -180,8 +174,7 @@ int tpafe5160_read_all(int16_t *buf)
|
||||
* 限定条件:GPIO 已初始化
|
||||
* 函数说明:启动转换并等待完成后,连续读取至指定通道
|
||||
*/
|
||||
int tpafe5160_read_channel(uint8_t channel, int16_t *value)
|
||||
{
|
||||
int tpafe5160_read_channel(uint8_t channel, int16_t *value) {
|
||||
int ret = 0;
|
||||
int16_t buf[TPAFE5160_CH_NUM] = {0};
|
||||
|
||||
@@ -207,8 +200,7 @@ int tpafe5160_read_channel(uint8_t channel, int16_t *value)
|
||||
* ±10V量程时 LSB = 20V / 65536 ≈ 305.18μV
|
||||
* 硬件 RANGE 引脚接 GND,默认 ±5V 量程
|
||||
*/
|
||||
float tpafe5160_to_voltage(int16_t raw)
|
||||
{
|
||||
float tpafe5160_to_voltage(int16_t raw) {
|
||||
/* RANGE 接 GND → ±5V 量程,满量程 10V */
|
||||
return (float)raw * (10.0f / 65536.0f);
|
||||
}
|
||||
@@ -220,8 +212,7 @@ float tpafe5160_to_voltage(int16_t raw)
|
||||
* 限定条件:RD 为低或 CS 与 RD 已拉低
|
||||
* 函数说明:读取 GPIOG->IDR 低16位,对应 DB[15:0]
|
||||
*/
|
||||
uint16_t tpafe5160_read_bus(void)
|
||||
{
|
||||
uint16_t tpafe5160_read_bus(void) {
|
||||
return TPAFE5160_READ_BUS();
|
||||
}
|
||||
|
||||
@@ -241,8 +232,7 @@ uint16_t tpafe5160_read_bus(void)
|
||||
* t14 数据建立 ≤ 21ns → 数据在 RD 下降沿后 21ns 内有效
|
||||
* 5 个 NOP (~30ns) 覆盖建立时间
|
||||
*/
|
||||
static void tpafe5160_read_channels(uint8_t count, int16_t *buf)
|
||||
{
|
||||
static void tpafe5160_read_channels(uint8_t count, int16_t *buf) {
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
@@ -272,8 +262,7 @@ static volatile uint8_t s_buf_sel = 0; /* 0 = 写 B / 读 A, 1 = 写 A / 读 B
|
||||
* 限定条件:CubeMX 已完成 GPIO 和 NVIC 配置
|
||||
* 函数说明:正常启动流程无需调用,仅在 irq_disable() 后需要重新使能时使用
|
||||
*/
|
||||
void tpafe5160_irq_enable(void)
|
||||
{
|
||||
void tpafe5160_irq_enable(void) {
|
||||
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
|
||||
}
|
||||
|
||||
@@ -284,8 +273,7 @@ void tpafe5160_irq_enable(void)
|
||||
* 限定条件:已调用 tpafe5160_irq_enable()
|
||||
* 函数说明:仅禁用 NVIC 中断,GPIO 配置保持 CubeMX 设定
|
||||
*/
|
||||
void tpafe5160_irq_disable(void)
|
||||
{
|
||||
void tpafe5160_irq_disable(void) {
|
||||
HAL_NVIC_DisableIRQ(EXTI9_5_IRQn);
|
||||
}
|
||||
|
||||
@@ -296,8 +284,7 @@ void tpafe5160_irq_disable(void)
|
||||
* 限定条件:已调用 tpafe5160_irq_enable()
|
||||
* 函数说明:产生 CONVST 脉冲,转换完成后由 EXTI 中断自动读取 8 通道数据
|
||||
*/
|
||||
void tpafe5160_start_conv_irq(void)
|
||||
{
|
||||
void tpafe5160_start_conv_irq(void) {
|
||||
s_ready = 0;
|
||||
TPAFE5160_CONVST_PULSE();
|
||||
}
|
||||
@@ -309,8 +296,7 @@ void tpafe5160_start_conv_irq(void)
|
||||
* 限定条件:中断模式已启用
|
||||
* 函数说明:在 EXTI 回调中置位,主循环读取后需调用 tpafe5160_clear_ready() 清除
|
||||
*/
|
||||
uint8_t tpafe5160_data_ready(void)
|
||||
{
|
||||
uint8_t tpafe5160_data_ready(void) {
|
||||
return s_ready;
|
||||
}
|
||||
|
||||
@@ -321,8 +307,7 @@ uint8_t tpafe5160_data_ready(void)
|
||||
* 限定条件:中断模式已启用
|
||||
* 函数说明:主循环处理完数据后调用
|
||||
*/
|
||||
void tpafe5160_clear_ready(void)
|
||||
{
|
||||
void tpafe5160_clear_ready(void) {
|
||||
s_ready = 0;
|
||||
}
|
||||
|
||||
@@ -333,8 +318,7 @@ void tpafe5160_clear_ready(void)
|
||||
* 限定条件:tpafe5160_data_ready() 返回 1 时调用
|
||||
* 函数说明:双缓冲切换,ISR 写另一个缓冲区,主循环安全读取当前缓冲区
|
||||
*/
|
||||
const int16_t* tpafe5160_get_buf(void)
|
||||
{
|
||||
const int16_t* tpafe5160_get_buf(void) {
|
||||
return (s_buf_sel == 0) ? s_buf_a : s_buf_b;
|
||||
}
|
||||
|
||||
@@ -345,13 +329,11 @@ const int16_t* tpafe5160_get_buf(void)
|
||||
* 限定条件:BUSY EXTI 已使能
|
||||
* 函数说明:转换完成后自动读取 8 通道数据到缓冲区,耗时约 0.5µs (168MHz)
|
||||
*/
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
||||
tpafe5160_exti_handler(GPIO_Pin);
|
||||
}
|
||||
|
||||
void tpafe5160_exti_handler(uint16_t GPIO_Pin)
|
||||
{
|
||||
void tpafe5160_exti_handler(uint16_t GPIO_Pin) {
|
||||
if (GPIO_Pin != TP_BUSY_Pin) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user