OpenEdv-开源电子网

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

STM32F1串口寄存器库函数配置课程上的程序的疑问

[复制链接]

1

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2022-1-17
在线时间
3 小时
发表于 2022-2-11 22:50:11 | 显示全部楼层 |阅读模式
各位大佬救命,原子哥的复制上去是可以的,但为什么我照着课程写的不行啊!找了俩小时没找到错误在哪。。。

这是我照着写的:
#include"stm32f10x.h"

void my_usart_init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef  NVIC_InitStructure;
       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
       
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;

        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        USART_InitStructure.USART_BaudRate=115200;
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        USART_InitStructure.USART_Parity=USART_Parity_No;
        USART_InitStructure.USART_StopBits=USART_StopBits_1;
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;
        USART_Init(USART1,&USART_InitStructure);
       
        USART_Cmd(USART1,ENABLE);
       
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
       
        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
       
        NVIC_Init(&NVIC_InitStructure);
       
}

void USART1_TRQHandler(void)
{
        u8 res;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
        res= USART_ReceiveData(USART1);
        USART_SendData(USART1,res);
               
        }

}

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        my_usart_init();
        while(1);

}


这是原子哥的:
  • #include "stm32f10x.h"
  • void my_usart_init(void)
  • {
  • GPIO_InitTypeDef  GPIO_InitStructure;
  • USART_InitTypeDef  USART_InitStructure;
  • NVIC_InitTypeDef NVIC_InitStructure;
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//①
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  •                                                                                                                                                                         //②
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//LED0-->PA.9 端口配置
  • GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  • GPIO_InitStructure.GPIO_Speed =GPIO_Speed_10MHz; //IO口速度为10MHz
  • GPIO_Init(GPIOA, &GPIO_InitStructure);      //根据设定参数初始化GPIOA.9
  • GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//LED0-->PA.10 端口配置
  • GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;  //推挽输出
  • GPIO_InitStructure.GPIO_Speed =GPIO_Speed_10MHz; //IO口速度为10MHz
  • GPIO_Init(GPIOA, &GPIO_InitStructure);      //根据设定参数初始化GPIOA.10
  • USART_InitStructure.USART_BaudRate=115200;
  • USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  • USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
  • USART_InitStructure.USART_Parity=USART_Parity_No;
  • USART_InitStructure.USART_StopBits=USART_StopBits_1;
  • USART_InitStructure.USART_WordLength=USART_WordLength_8b;
  • USART_Init(USART1,&USART_InitStructure);//③
  • USART_Cmd(USART1,ENABLE);//使能串口一
  • USART_ITConfig(USART1,USART_IT_RXNE ,ENABLE);//开启接收中断
  • NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
  • NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  • NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  • NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
  • NVIC_Init(&NVIC_InitStructure);
  • }
  • void USART1_IRQHandler(void)
  • {
  •         u8 res;
  •          if(USART_GetITStatus(USART1,USART_IT_RXNE))
  • {
  •      res= USART_ReceiveData(USART1);
  •      USART_SendData(USART1,res);
  •   }
  • }
  • int main(void)
  • {
  • NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  •         my_usart_init();
  •         while(1);
  • }


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

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-2-12 11:28:58 | 显示全部楼层
报的什么错啊?
如果内容完全照抄原子例程
一般自己写容易出现的错误就是分号用了全角;少头文件路径;使用32库函数时没有在keil配置里的宏定义中加上使用标准库的那条定义 等等
基本都是配置或者手误导致的
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2022-1-17
在线时间
3 小时
 楼主| 发表于 2022-2-12 13:01:12 | 显示全部楼层
babyrabbit 发表于 2022-2-12 11:28
报的什么错啊?
如果内容完全照抄原子例程
一般自己写容易出现的错误就是分号用了全角;少头文件路径;使 ...

没报错
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2022-1-17
在线时间
3 小时
 楼主| 发表于 2022-2-12 13:01:42 | 显示全部楼层
babyrabbit 发表于 2022-2-12 11:28
报的什么错啊?
如果内容完全照抄原子例程
一般自己写容易出现的错误就是分号用了全角;少头文件路径;使 ...

就是接收不了数据
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2022-1-17
在线时间
3 小时
 楼主| 发表于 2022-2-12 13:05:48 | 显示全部楼层
babyrabbit 发表于 2022-2-12 11:28
报的什么错啊?
如果内容完全照抄原子例程
一般自己写容易出现的错误就是分号用了全角;少头文件路径;使 ...

就像这样 屏幕截图 2022-02-12 130347.png
回复 支持 反对

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-2-12 13:35:28 | 显示全部楼层
没看出来 在不报错的情况下
同样的程序如果一个好用 另一个不好用还是手误的可能性最大了 可能哪里写错了但是在逻辑上编译器又看不出来的那种
以前遇到过开时钟APB1和APB2弄错的情况 函数特别像 编译器也能通过实际上就是不运行
可以试试配LED灯、不收只发、debug看寄存器值有没有变、示波器看波形这些方法
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2022-1-17
在线时间
3 小时
 楼主| 发表于 2022-2-12 15:29:28 | 显示全部楼层
babyrabbit 发表于 2022-2-12 13:35
没看出来 在不报错的情况下
同样的程序如果一个好用 另一个不好用还是手误的可能性最大了 可能哪里写错了 ...

找到错误了,谢谢
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2022-2-14
在线时间
23 小时
发表于 2022-2-14 16:43:51 | 显示全部楼层
gythhh 发表于 2022-2-12 15:29
找到错误了,谢谢

我之前也遇到过类似的问题,照着例程写了一段串口程序但是不好用,您这个是什么问题啊
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2022-4-23
在线时间
2 小时
发表于 2022-4-23 20:22:39 | 显示全部楼层
gythhh 发表于 2022-2-12 15:29
找到错误了,谢谢

请问您是怎么解决的啊?我也遇到了这个问题了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 11:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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