OpenEdv-开源电子网

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

为什么我将程序中的USART1全部改成USART2就不能使用了呢?

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2022-2-26
在线时间
10 小时
发表于 2022-2-26 19:11:59 | 显示全部楼层 |阅读模式
1金钱
各位能帮忙看看吗?我这个用USART1可以使用,改成USART2就不能使用了,不知道是不是程序问题。

void Usart2_Init(u32 bound)
{  
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
     
    USART_InitStructure.USART_BaudRate = bound;
    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(USART2, &USART_InitStructure);

    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    USART_Cmd(USART2, ENABLE);
}

void Usart2_sendstring(char *string)
{
    int k=0;
    do
    {
        USART_SendData(USART2,string[k]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
        k++;
    }while(string[k]!='\0');

    while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
}

主函数中是:
int main(void)
{
   
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
     
    delay_init();
    Usart2_Init(115200);
   
    while(1)
    {        
        Usart2_sendstring("USART2");
        delay_ms(500);
    }


最佳答案

查看完整内容[请看2#楼]

楼上说的对,论坛上也有分享过多串口的,你可以参考下这个的http://www.openedv.com/forum.php?mod=viewthread&tid=289455&highlight=%D5%BD%BD%A2%2B%B4%AE%BF%DA
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-2-26 19:12:00 | 显示全部楼层
楼上说的对,论坛上也有分享过多串口的,你可以参考下这个的http://www.openedv.com/forum.php ... D%A2%2B%B4%AE%BF%DA
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-4-7
在线时间
8 小时
发表于 2022-4-9 10:07:34 | 显示全部楼层
哥,不同外设的连接是不一样的,当然不能照搬,思想是一样的,改一下gpio连接和使能时钟把
回复

使用道具 举报

5

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
金钱
1389
注册时间
2019-5-29
在线时间
163 小时
发表于 2022-4-11 17:34:30 | 显示全部楼层
不是改个名字就能直接用的啊,看看是那些外设,IO寄存器这些都注意一下
偷偷摸鱼
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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