硬汉嵌入式论坛

 找回密码
 立即注册
查看: 427|回复: 6
收起左侧

串口问题

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2025-6-13 10:58:26 | 显示全部楼层 |阅读模式
串口助手为什么在发送和接收都不成功,而且USB是没问题的,求解
char rx_array[100];
char send_array[100];

uint8_t rx_flag;
uint8_t rx_size;
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
        if(huart->Instance==USART1)
        {
                rx_flag=1;//接收到了
                rx_size=Size;
               
     HAL_UARTEx_ReceiveToIdle_DMA(&huart1,(uint8_t *)rx_array,100);       
        }
}
uint8_t is_digit(char a)
{
return(a>='0'&&a<='9');       
}
void rx_handle(void)//接收处理
{
        if(rx_flag)
        {
                rx_flag=0;
                if(rx_size==7)//跳过
                {
                        if(rx_array[0]==password[0]+'0'&&rx_array[1]==password[1]+'0'&&rx_array[2]==password[2]+'0'&&rx_array[3]=='-')
                        {
                                if(is_digit(rx_array[4]) && is_digit(rx_array[5]) && is_digit(rx_array[6]))
                                {
                                        password[0]=rx_array[4]-'0';
                                        password[1]=rx_array[5]-'0';
                                        password[2]=rx_array[6]-'0';
                    sprintf(send_array,"%d%d%d\r\n",password[0],password[1],password[2]);
                                        HAL_UART_Transmit_DMA(&huart1,(uint8_t *)send_array,strlen(send_array));

                                }
                        }
                }

  memset(rx_array,0,100);//接收数组清零
        }       
}
主函数:

HAL_UARTEx_ReceiveToIdle_DMA(&huart1,(uint8_t *)rx_array,100);





[/mw_shl_code]
回复

使用道具 举报

6

主题

90

回帖

108

积分

初级会员

积分
108
发表于 2025-6-13 15:09:33 | 显示全部楼层
用逻辑分析仪或者示波器量一下
回复

使用道具 举报

102

主题

573

回帖

894

积分

金牌会员

积分
894
QQ
发表于 2025-6-13 15:21:33 | 显示全部楼层
直接用安富莱的串口代码。。这个我看不懂。。
回复

使用道具 举报

4

主题

90

回帖

102

积分

初级会员

积分
102
发表于 2025-6-13 20:37:00 | 显示全部楼层
啥叫不成功?你这大段都是串口解析啊,void rx_handle(void)在哪里调用的?更应该给配置代码吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-14 08:02:07 | 显示全部楼层
可以考虑先简单的HAL库的查询方式发送和接受API,看看正常不,正常后说明测试环境没问题,再调试你这个代码比较方便些。
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2025-6-14 10:57:14 | 显示全部楼层
Penguins 发表于 2025-6-13 20:37
啥叫不成功?你这大段都是串口解析啊,void rx_handle(void)在哪里调用的?更应该给配置代码吧

这个void rx_handle(void)是跟着UP主写的我和up主写的一样但他能发送和接收我的不能
回复

使用道具 举报

6

主题

44

回帖

62

积分

初级会员

积分
62
发表于 2025-6-14 13:49:39 | 显示全部楼层
linzhuo 发表于 2025-6-14 10:57
这个void rx_handle(void)是跟着UP主写的我和up主写的一样但他能发送和接收我的不能

串口配置好了吗?建议先搞明白串口和DMA是怎样协调的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-11 21:05 , Processed in 0.041504 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表