OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3176|回复: 4

F103VE的串口5配置

[复制链接]

7

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2014-2-10
在线时间
10 小时
发表于 2016-5-31 16:24:19 | 显示全部楼层 |阅读模式
1金钱
原子老师:
             你好!上次跟您请教了串口2,3,4,5 的配置问题,你讲串口1的配置类似,注意时钟配置就可以了。
谢谢您的提醒,我现在串口2,3,4,都成功了,可以收发数据!
但是串口5,现在只能发送,不能接收数据!配置如下:请指教!谢谢原子老师!
//==========================================================================================================================
//2016-05-32 config to the UART5 (PC12--TXD2---RX)
//=======================================================================================
void uart5_init(u32 bound){

    GPIO_InitTypeDef GPIO_InitStructure;
                USART_InitTypeDef USART_InitStructure;
                NVIC_InitTypeDef NVIC_InitStructure;
       
                // notes: UART5 in APB1
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);
                //NOtes: GPIOC;GPIOD ;AFIO; in APB2
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO ,ENABLE);
       
       
     //UART5_TX   PC12
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    //UART5_RX          PD2
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOD, &GPIO_InitStructure);  


   //Uart5 NVIC

  NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn ;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                    //

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //
        NVIC_Init(&NVIC_InitStructure);        //



        USART_InitStructure.USART_BaudRate = bound;//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(UART5, &USART_InitStructure);
    USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
    USART_Cmd(UART5, ENABLE);                  
    USART_ClearFlag(UART5,USART_FLAG_TC);

}



//=======================================================================================================================================

void UART5_IRQHandler(void)                       
        {
        u8 Res;
        if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)  
                {
                Res =USART_ReceiveData(UART5);
               
                if((USART_RX_STA&0x80)==0)
                        {
                        if(USART_RX_STA&0x40)
                                {
                                if(Res!=0x0a)USART_RX_STA=0;
                                else USART_RX_STA|=0x80;       
                                }
                        else
                                {       
                                if(Res==0x0d)USART_RX_STA|=0x40;
                                else
                                        {
                                        USART_RX_BUF[USART_RX_STA&0X3F]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>63)USART_RX_STA=0;          
                                        }                 
                                }
                        }                    
     }
}

bryanqin
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11545
金钱
11545
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-5-31 16:34:20 | 显示全部楼层

最好说下现象,
1、能不能进入中断?
2、第一个if条件成立吗?


回复

使用道具 举报

5

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2016-5-29
在线时间
5 小时
发表于 2016-5-31 17:21:33 | 显示全部楼层
路过帮顶
回复

使用道具 举报

7

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2014-2-10
在线时间
10 小时
 楼主| 发表于 2016-6-1 14:45:02 | 显示全部楼层
xuande 发表于 2016-5-31 16:34
最好说下现象,
1、能不能进入中断?
2、第一个if条件成立吗?

中断函数都是一样的跟USART1,2,3,4
一样;难道是其他配置问题;管脚,或者啥?
bryanqin
回复

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-6-1 14:55:57 | 显示全部楼层
你的这个代码应该是会报错的,串口三以后,串口初始化就不再是USARTx了,而是变成了UARTx,因为串口4和串口5不在支持同步时钟。
开着单片机翱翔在天空
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 00:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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