打印
[STM32F4]

UART与PC串口RS232通信

[复制链接]
3705|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线序接错了,公头母头线序不一样

使用特权

评论回复
评论
wang168506 2015-6-30 16:22 回复TA
我感觉也是 
地板
Thor9| | 2015-6-30 11:54 | 只看该作者
楼主可以上点程序,大家帮忙研究一下

使用特权

评论回复
5
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)
        {

        }
}
这是我的程序

使用特权

评论回复
6
fanxsd| | 2015-6-30 13:29 | 只看该作者
用示波器 先看看TTL 电平的 TX和RX有电平信号吗,如果有 说明TX RX 接线有问题啦

使用特权

评论回复
7
Thor9| | 2015-6-30 16:15 | 只看该作者
先看看有电平信号输出没有

使用特权

评论回复
8
wang168506| | 2015-6-30 16:23 | 只看该作者
smallbra 发表于 2015-6-30 12:23
void USART_Gpio_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

这个是中断完成的回环接收发送,中断函数那里仔细看看

使用特权

评论回复
9
wang168506| | 2015-6-30 16:23 | 只看该作者
smallbra 发表于 2015-6-30 12:23
void USART_Gpio_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

这个是中断完成的回环接收发送,中断函数那里仔细看看

使用特权

评论回复
10
smallbra|  楼主 | 2015-7-1 09:06 | 只看该作者
我测了一下端口,没有数据输出,我试着设置了发送完成中断,运行的时候没有进入中断,是我的串口设置有问题吗?

使用特权

评论回复
11
smallbra|  楼主 | 2015-7-1 13:33 | 只看该作者
发现问题了,是我的串口时钟没使能

使用特权

评论回复
12
smallbra|  楼主 | 2015-7-1 13:33 | 只看该作者
结贴,是串口时钟没使能,应该在串口初始化那里加一句RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART8, ENABLE );

使用特权

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

本版积分规则

13

主题

27

帖子

0

粉丝