打印
[STM32F0]

NUCLEO串口通讯的问题

[复制链接]
1630|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用STM32F070写了个串口1的通讯程序,用RS232转TTL转接座接到
NUCLEO的PA9和PA10上,通讯不成功,串口助手老是收到00.
程序如下:
void uart1_init(INT32U Baud)
{
        USART_InitTypeDef  USART_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        NVIC_InitTypeDef  NVIC_InitStructure;
                /* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG|RCC_APB2Periph_USART1, ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);                                //ʹÄÜÓõ½µÄGPIOAʱÖÓ
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART1,ENABLE);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);                                                                        //ÅäÖÃPA9(´®¿Ú1TXD)ΪÊä³ö¸´ÓÃÍÆÍì
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
        GPIO_Init(GPIOA,&GPIO_InitStructure);                                                                        //ÅäÖÃPA10(´®¿Ú1RXD)ΪÊäÈë
       
        USART_InitStructure.USART_BaudRate=Baud;                                                        //²¨ÌØÂÊ
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;                        //8λ
        USART_InitStructure.USART_StopBits=USART_StopBits_1;                                        //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(USART1,&USART_InitStructure);                                                                                        //¸ù¾ÝUSART_InitStructureÒÑÌîдµÄ²ÎÊý³õʼ»¯´®¿Ú1
        USART_Cmd(USART1,ENABLE);                                                                                                                                                        //ʹÄÜ´®¿Ú1
       
        USART_GetFlagStatus(USART1,USART_FLAG_TC);                                                                                //Çå³ý½ÓÊÕÖжϣ¬½â¾öµÚÒ»¸ö×Ö½Ú·¢²»³öÈ¥µÄÎÊÌâ
       
        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;                                                                //USART1ÖжϺÅ
        NVIC_InitStructure.NVIC_IRQChannelPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                                                                        //IRQͨµÀʹÄÜ
        NVIC_Init(&NVIC_InitStructure);                                                                                                                                //¸ù¾ÝNVIC_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèNVIC¼Ä´æÆ÷
       
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);                                                                        //½ÓÊÕÖжÏʹÄÜ
}


int main(void)
{              
          
        //SystemInit(); //ϵͳʱÖÓÅäÖú¯Êý£¬Í¨¹ý²»Í¬µÄʱÖÓ¶¨Ò壬À´Ñ¡Ôñ²»Í¬µÄÖ÷Ƶ         
        led_init();  
                uart1_init(9600);
  while(1)
        {
                        //USART_SendData(USART1,0X55);
                        led_turn;
                        delay_ms(250);
                                                       
  }
                                                       
                                 
                
                     
}


请高手看看,谢谢!
沙发
JY-DX-JY|  楼主 | 2015-5-21 11:02 | 只看该作者
高手支招啊!

使用特权

评论回复
板凳
神的礼物| | 2015-5-21 15:00 | 只看该作者
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
小了这两句

使用特权

评论回复
地板
JY-DX-JY|  楼主 | 2015-5-21 15:28 | 只看该作者
谢谢!我加了这两句,倒是没有00了,可是我往串口发数据,没有回应。
我又修改了一下主程序,循环发55,可是串口助手收到的不是55是两个字节:


使用特权

评论回复
5
JY-DX-JY|  楼主 | 2015-5-21 16:49 | 只看该作者
我感觉是时钟的问题。

使用特权

评论回复
6
冰河w| | 2015-5-21 19:39 | 只看该作者
时序很关键啊

使用特权

评论回复
7
JY-DX-JY|  楼主 | 2015-5-21 20:51 | 只看该作者
串口有什么时序?

使用特权

评论回复
8
mmuuss586| | 2015-5-21 23:08 | 只看该作者
波特率不对吧;
用示波器看下;

使用特权

评论回复
9
Leeone| | 2015-5-22 08:42 | 只看该作者
IO设置的不对,F0的 io用在外设要复用再设置输入输出,又个多路复用选择器

使用特权

评论回复
10
mark0668| | 2015-5-22 09:03 | 只看该作者
是这个虚拟串口,他跟单片机的串口2  A2,A3 连接了  要独立出来就把背后那两个电阻焊开就可以独立了

使用特权

评论回复
11
JY-DX-JY|  楼主 | 2015-5-22 10:56 | 只看该作者
Leeone 发表于 2015-5-22 08:42
IO设置的不对,F0的 io用在外设要复用再设置输入输出,又个多路复用选择器

GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
是这两句吗?

使用特权

评论回复
12
JY-DX-JY|  楼主 | 2015-5-22 11:20 | 只看该作者
mark0668 发表于 2015-5-22 09:03
是这个虚拟串口,他跟单片机的串口2  A2,A3 连接了  要独立出来就把背后那两个电阻焊开就可以独立了 ...

串口2不影响串口1吧?

使用特权

评论回复
13
JY-DX-JY|  楼主 | 2015-5-22 11:34 | 只看该作者
mark0668 发表于 2015-5-22 09:03
是这个虚拟串口,他跟单片机的串口2  A2,A3 连接了  要独立出来就把背后那两个电阻焊开就可以独立了 ...

那两个电阻?原理图上没发现哪两个电阻。

使用特权

评论回复
14
mark0668| | 2015-5-22 13:30 | 只看该作者
JY-DX-JY 发表于 2015-5-22 11:34
那两个电阻?原理图上没发现哪两个电阻。

你拿万用表测量,虚拟串口RX,TX   跟芯片上的管脚一测就知了,(我说的是测芯片上的管脚别测扩展出来的那个脚哦,因为扩展的A2,A3 脚是断开的)

使用特权

评论回复
15
一路向北lm| | 2018-5-28 20:45 | 只看该作者
这个板卡用的是串口2

使用特权

评论回复
16
chenqiang10| | 2018-5-28 21:34 | 只看该作者
这个是用串口2 还用就是时钟要选择对。

使用特权

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

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3349

帖子

30

粉丝