打印
[STM32F1]

STM32 串口不能循环输出问题

[复制链接]
488|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heweibig|  楼主 | 2022-4-14 21:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要从外部采集到电压信号,经过采集处理后,通过串口输出给上位机。现在是想用UART2去发送AD转换后的数据。只需要发送数据就可以了

使用特权

评论回复
沙发
heweibig|  楼主 | 2022-4-14 21:12 | 只看该作者
下面是UART相关的配置:

void USART_Config(void)
{      GPIO_InitTypeDef GPIO_InitStructure;        USART_InitTypeDef USART_InitStructure;
        DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
        DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);

        GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
        
        USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No ;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(DEBUG_USARTx, &USART_InitStructure);
        
        NVIC_Configuration();
        USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);        
        USART_Cmd(DEBUG_USARTx, ENABLE);               
        USART_ClearFlag(USART1, USART_FLAG_TC);     
}

/// 重定向C库函数printf到USART2
int fputc(int ch, FILE *f)
{
                DEBUG_USARTx->SR;
                USART_SendData(DEBUG_USARTx, (uint8_t) ch);
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE)== RESET);               
                return (ch);
}

int main ( void )
{

  int i=0;
float ADval=0;
        USART_Config ();                                                         
        SysTick_Init ();                                                        
        
        AdcInit();
               
        Set_Adc(ADC_Channel_6);
        LED_ON;
        Delay_ms(10);
        while(1)
        {
                for(i=0;i<3;i++)
        {
                LED_ON;
                Delay_ms(5);
                ADval=Get_ADValue();
        //        printf("OD:%.3f \r\n",ADval*3.3/4096);        
                printf("OD:%.3f \r\n",ADval);
        }
        
        for(i=0;i<3;i++)
        {
                LED_OFF;
                Delay_ms(5);
                ADval=Get_ADValue();
        //        printf("OD:%.3f \r\n",ADval*3.3/4096);        
                printf("OD:%.3f \r\n",ADval);
        }
        
}        

使用特权

评论回复
板凳
renyaq| | 2022-4-14 21:16 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
地板
heweibig|  楼主 | 2022-4-14 21:18 | 只看该作者
目前串口调试助手上可以正确显示,但是只有很短的一段时间,需要断电后,重新连接,再发送一部分

使用特权

评论回复
5
heweibig|  楼主 | 2022-4-14 21:21 | 只看该作者
我希望是可以一直发送数据。也是刚接触这个编程不久,看了不少的帖子,还有例子,还是弄的不是很清楚,

使用特权

评论回复
6
heweibig|  楼主 | 2022-4-14 21:24 | 只看该作者
没有传完整就停了,感觉像是设定的时间到了一样,不知道该从哪里去找

使用特权

评论回复
7
renyaq| | 2022-4-14 21:25 | 只看该作者
先将此句屏蔽了它,USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);  目的先不理会串口来的中断

使用特权

评论回复
8
dengdc| | 2022-4-14 21:28 | 只看该作者
不用理会ADC转换值,直接用printf("*************\r\n") 诸如此类字符测试下

使用特权

评论回复
9
zwll| | 2022-4-14 21:30 | 只看该作者
中断打开了,又用查询方式发送,当然有问题

使用特权

评论回复
10
heweibig|  楼主 | 2022-4-14 21:34 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
11
SantaBunny| | 2023-3-3 13:19 | 只看该作者
引脚复用上了没

使用特权

评论回复
12
Henryko| | 2023-3-3 19:54 | 只看该作者
不理会ADC转换值试试

使用特权

评论回复
13
Uriah| | 2024-1-11 14:08 | 只看该作者

然后焊接到更大的PCB上

使用特权

评论回复
14
童雨竹| | 2024-4-5 08:18 | 只看该作者

如果防护与热设计欠佳

使用特权

评论回复
15
Wordsworth| | 2024-4-5 09:21 | 只看该作者

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗

使用特权

评论回复
16
Clyde011| | 2024-4-5 10:24 | 只看该作者

在板的边缘上照常制作整个电镀通孔。

使用特权

评论回复
17
公羊子丹| | 2024-4-5 11:17 | 只看该作者

缩合型灌封硅胶由于固化过程有体积收缩一般不使用在模块电源的灌封中

使用特权

评论回复
18
万图| | 2024-4-5 12:20 | 只看该作者

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大

使用特权

评论回复
19
帛灿灿| | 2024-4-5 15:19 | 只看该作者

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。

使用特权

评论回复
20
Bblythe| | 2024-4-5 16:22 | 只看该作者

通过对于PCB电路板边缘的孔或通孔做电镀石墨化

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

粉丝