OpenEdv-开源电子网

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

原子哥的F407HAL库串口问题。

[复制链接]

3

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2016-7-11
在线时间
84 小时
发表于 2017-11-20 19:29:01 | 显示全部楼层 |阅读模式
1金钱
之前一直在向原子哥要407的HAL库,很感谢原子哥能抽出时间写了407的HAL库,最近重新学习HAL的时候,编译里面的串口实验代码出现错误。是时钟配置的问题,..\HALLIB\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c(702): error:  #20: identifier "AHBPrescTable" is undefined。下载了1.1版本也是这个问题,别的工程都能通过。然后把main函数复制到其它工程中,下载出现后用打印到串口出现乱码,波特率也是对的。然后发送字符过去没有反应,调试就是不进中断。网上找了HAL+DMA利用IDLE中断实现了不定长接收,想试一下原子哥的例程结果出现这个问题。感谢!
BaiduShurufa_2017-11-20_19-14-5.png
BaiduShurufa_2017-11-20_19-14-17.png
BaiduShurufa_2017-11-20_19-19-34.png

最佳答案

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

例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-11-20 19:29:02 | 显示全部楼层
例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!
回复

使用道具 举报

3

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2016-7-11
在线时间
84 小时
 楼主| 发表于 2017-11-21 17:20:17 | 显示全部楼层
zuozhongkai 发表于 2017-11-20 19:29
例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!

感谢 不过例程4串口实验还是编译错误,我换到其它工程更改了您说的两个位置,测试通过了,感谢。对照着CubeMX配置的工程看了一下,一个在system_stm32f4xx.c中(CubeMX配置的是25000000),一个在stm32f4xx_hal_conf.h中(CubeMX配置的是8000000),改stm32f4xx_hal_conf.h里面的HSE_VALUE宏就可以解决乱码问题。
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2019-4-13 17:59:08 | 显示全部楼层
耘耔 发表于 2017-11-21 17:20
感谢 不过例程4串口实验还是编译错误,我换到其它工程更改了您说的两个位置,测试通过了,感谢。对照着Cu ...

请问改了8000000还是乱码,怎么情况
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2019-4-13 20:39:08 | 显示全部楼层
zuozhongkai 发表于 2017-11-20 19:29
例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!

解决乱码只需要修改一处就可以,只是报错很尴尬
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2019-4-13 20:40:10 | 显示全部楼层
耘耔 发表于 2017-11-21 17:20
感谢 不过例程4串口实验还是编译错误,我换到其它工程更改了您说的两个位置,测试通过了,感谢。对照着Cu ...

我和你遇到的情况一样,怎么解决的请问
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2019-4-13 21:52:17 | 显示全部楼层

从新CUBE建了一个工程,按照原子哥历程配置,搞定了,上传源码

本帖最后由 长昵称不被占用 于 2019-4-13 22:39 编辑
zuozhongkai 发表于 2017-11-20 19:29
例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!

请求支援,请问你们在自己的板子上能不能调是通过,探索者调试失败。。。
已搞定!!

实验4 串口通信实验.rar

1.33 MB, 下载次数: 375

回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2020-6-8
在线时间
9 小时
发表于 2020-7-29 17:06:42 | 显示全部楼层
zuozhongkai 发表于 2017-11-20 19:29
例程中所有的HSE_VALUE等于8000000,HAL库中一共有两处定义了宏HSE_VALUE,两处都要修改!

原子哥发布的其他的HAL库例程HSE_VALUE也都是2500000;为啥没报错?除了串口之外的例程还能用吗?
回复

使用道具 举报

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
发表于 2021-2-28 22:01:14 | 显示全部楼层
关于hal库的波特率源码设置有问题的,有很大误差。可以看一下usart的初始化函数里面的config函数,关于波特率计算是不对的.比如设置115200,写入BRR的数应该为0x000002d9;,而hal库计算的确是0x00000313.改成前面的数值就可以了。就解决乱码问题了.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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