
本帖最后由 我的颈 于 2015-12-26 10:11 编辑 求大婶 帮忙---解决这个问题??????STM32F410RB NUCLEO 时钟为什么会很准???? https://www.stmcu.org.cn/module/ ... amp;fromuid=3231136 (出处: 意法半导体STM32/STM8技术社区) 我又来发帖了,哈哈!! 上次是RCC,不是很详细. 这次是USART配置,尽量的详细些,(遇到个自认为大问题.) 新手发帖多多关照! 好了开始.寄存器版本 开发环境: KEIL MDK 5.16a 板子 : STM32F410 NUCLEO 1. 1 首先是串口GPIO配置 因为USART2使用的PA2,PA3,所以呢先打开AHB的GPIOA时钟, 然后是GPIO模式设置都设置为复用模式(MODE=10)(二进制) ![]() 接是着GPIO速度设置我们选择 HIGH Speed(OSPEEDR=10) ![]() 接下来GPIO上拉设置我们选择Pull-up(PUPDR=01) ![]() 最后是GPIO复用,首先看下F410 datasheet的引脚复用 我们看到 PA2 PA3 在AF7 (TX,RX设置相同)![]() 所以呢我们设置GPIO复用 AF7(AFRL=0111) ![]() 好的GPIO就设置好了.我们需要记住的是流程,具体为甚? 我也不知道.我就知道这么用.新手懂得不多!! 2. 2 然后是USART配置,这个好说 只需要配置USART2_CR1寄存器的四项(因人而异) USART2_CR的第5位 接收缓存非空 USART2_CR的第3位 TX使能 USART2_CR的第2位 RX使能 USART2_CR的第13位 USART使能 ![]() ![]() 然后是USART_BBR波特率设置 ![]() 有公式带进去 一元一次方程解得27.126 DIV_Mantissa[11:0]放整数 取27 DIV_Fraction[3:0] 放小数 取13 然后是中断处理函数了 放代码
3然后是调试了遇到了问题(只怪我太马虎) 看下这个引脚的图片 , NUCLEO ,PA2 PA3 复用TX,RX ![]() 主函数里一直发送数据,然后用分析仪抓取,什么都抓不到, ![]() 有问题?好从头分析,使用STM32F410RBNUCLEO自带的STlink 一步步的调试,看寄存器,我靠设置没问题还是不行!!!!! 用官方库函数的,还是抓不到我靠哪的问题????? 然后一步步调试,看寄存器的值,还是不行.真是日了X了. ……………………………………………………………… 用STM32F410RB NUCLEO 虚拟串口试试? ![]() OK!能接受到!!!!.就是抓不到数据, 测试下自己的程序吧!! 我去从虚拟串口也能看到.卧槽但是还是抓不到数据 测试下这个引脚 ![]() 我去可以有数据 ![]() 等等!我好想忽略了什么 用万用表测试一下,问题找到了 ![]() 原来是这样,原理图的SB63的0欧电阻没有焊,所以PA2 PA3 就是NC ![]() 板子介绍的文档也没看才导致这个问题,抓抓不到TX数据 ![]() 原理图看的还是少 不知道那个代表什么意思 ![]() (可能是我没仔细看文档) ![]() 好了就到这里了.一起交流 ![]() 新人发帖!多多关照! 谢谢 附件代码 ![]() |
跟随STM32FX的这些年来的心得:
1、动手前看原理图以及实物对照,很重要。(盲目去做会做无用功)
2、STM32F系列的外设寄存器变化不是很大,CM3、CM0只有部分寄存器的位有增减。(个人感觉看中文版的手册比较舒心,E文的手册基本是拿来当勘误用的,避免中文版翻译有遗漏。
3、个人习惯:初始化函数一般不直接操作寄存器,毕竟初始化只发生有限的次数,不必为了那点时间来降低可移植性(指STM32F系列之间的移植)。在主循环和中断处理,一般是会直接寄存器操作,以优化代码。
(个人愚见,欢迎评论!)
另外,还有一点,使用Uart2 Rx/Tx之前,需要用ST-LinkV2-1初始化固件。避免F10x的ST-link干扰。
确实是这样,涉及复杂的东西,就悲催了
楼主截图的时候,qq截图那一排按钮,有图形文字功能,这样会比用鼠标写较好看
好的谢谢
太丑啦
这调试起来,不是很方便,还要烙铁什么的
手里有0欧姆电阻的话,直接焊上不就行了吗
没有烙铁,没有0欧电阻
确实是,不过那样对布局就会有影响了吧.