[STM32F4] UART与PC串口RS232通信

[复制链接]
4074|12
 楼主| smallbra 发表于 2015-6-30 10:39 | 显示全部楼层 |阅读模式
STM32F429,用一个RS232接口模块转接,
,模块的地线连接板卡的地线,VCC接板卡上的5V,其他只接TX和RX,结果通信不了,并且在串口调试助手中发什么就自己收到什么,我的程序里没有这样写。求教
sunset_q 发表于 2015-6-30 11:10 | 显示全部楼层
示波器观察波形,是否数据已经发送到单片机的接收脚。如果单片机在接收程序里收到发送的数据,那么程序可能有问题。如果单片机没收到数据,那么模块或接线可能有问题。以前也遇到过的,忘了怎么解决的了。
lwsn 发表于 2015-6-30 11:14 | 显示全部楼层
估计是你的TX和RX线序接错了,公头母头线序不一样

评论

我感觉也是  发表于 2015-6-30 16:22
Thor9 发表于 2015-6-30 11:54 | 显示全部楼层
楼主可以上点程序,大家帮忙研究一下
 楼主| smallbra 发表于 2015-6-30 12:23 | 显示全部楼层
void USART_Gpio_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource0, GPIO_AF_UART8);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource1, GPIO_AF_UART8);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
}
void USART_Config(void)
{
        USART_InitTypeDef Usart_InitStructure;
        USART_Gpio_Config();
        RCC_AHB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
        Usart_InitStructure.USART_BaudRate = 9600;
        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( UART8 , &Usart_InitStructure);
  USART_Cmd(UART8,ENABLE);
}

void USARVT_NVIC_Config(void)
{
        NVIC_InitTypeDef  NVIC_InitStructure;
  NVIC_InitStructure.NVIC_IRQChannel  = UART8_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
        USART_ITConfig(UART8, USART_IT_RXNE, ENABLE);
}

void USARTx_IRQHandler(void)
{
        char receive;
        char a=0x05;
        if(USART_GetITStatus(UART8, USART_IT_RXNE) != RESET)
        {   
        receive = USART_ReceiveData( UART8 ) ;
        USART_SendData(UART8,a);
        }
}

、、、、、、、、、、、、、、、、、、、、、、、、、
int main(void)
{
        char a;
        USARVT_NVIC_Config();
        USART_Config();
        a=0x05;
        while(1)
        {

        }
}
这是我的程序
fanxsd 发表于 2015-6-30 13:29 | 显示全部楼层
用示波器 先看看TTL 电平的 TX和RX有电平信号吗,如果有 说明TX RX 接线有问题啦
Thor9 发表于 2015-6-30 16:15 | 显示全部楼层
先看看有电平信号输出没有
wang168506 发表于 2015-6-30 16:23 | 显示全部楼层
smallbra 发表于 2015-6-30 12:23
void USART_Gpio_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

这个是中断完成的回环接收发送,中断函数那里仔细看看
wang168506 发表于 2015-6-30 16:23 | 显示全部楼层
smallbra 发表于 2015-6-30 12:23
void USART_Gpio_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

这个是中断完成的回环接收发送,中断函数那里仔细看看
 楼主| smallbra 发表于 2015-7-1 09:06 | 显示全部楼层
我测了一下端口,没有数据输出,我试着设置了发送完成中断,运行的时候没有进入中断,是我的串口设置有问题吗?
 楼主| smallbra 发表于 2015-7-1 13:33 | 显示全部楼层
发现问题了,是我的串口时钟没使能
 楼主| smallbra 发表于 2015-7-1 13:33 | 显示全部楼层
结贴,是串口时钟没使能,应该在串口初始化那里加一句RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART8, ENABLE );
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部