【NUCLEO-F410RB开发】+串口之我见
本帖最后由 我的颈 于 2015-12-26 10:11 编辑求大婶 帮忙---解决这个问题??????STM32F410RB NUCLEO 时钟为什么会很准????
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=604674&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放整数 取27
DIV_Fraction 放小数 取13
然后是中断处理函数了
放代码
void USART2_IRQHandler(void)
{
if(USART2->SR&(1<<5))//????? //是否接收中断
{
USART2->DR=USART2->DR; //接收在发送
}
}
void USART2_Init(void)
{
RCC->AHB1ENR |=1<<0; //GPIOA 时钟
GPIOA->MODER |=2<<4; //PA2复用模式
GPIOA->MODER |=2<<6; //PA3复用模式
GPIOA->OSPEEDR |=2<<4; //IO速度
GPIOA->OSPEEDR |=2<<6; //IO速度
GPIOA->PUPDR |=1<<4; //上拉
GPIOA->PUPDR |=1<<6; //上拉
GPIOA->AFR |=7<<12; //复用AF7 RX
GPIOA->AFR |=7<<8; //复用AF7 TX
USART2->SR &=~(1<<5); //清除接收中断
RCC->APB1ENR |=1<<17; //USART2时钟
USART2->BRR |=27<<4; //波特率
USART2->BRR |=13<<0; //小数位
USART2->CR1 |=1<<5; //开启接收中断
USART2->CR1 |=1<<3; //接收使能
USART2->CR1 |=1<<2; //发送使能
USART2->CR1 |=1<<13; //USART 使能
NVIC_Init(2,3,3,USART2_IRQn); //中断优先级
}
3然后是调试了遇到了问题(只怪我太马虎)
看下这个引脚的图片 , NUCLEO ,PA2 PA3 复用TX,RX
主函数里一直发送数据,然后用分析仪抓取,什么都抓不到,
有问题?好从头分析,使用STM32F410RBNUCLEO自带的STlink
一步步的调试,看寄存器,我靠设置没问题还是不行!!!!!
用官方库函数的,还是抓不到我靠哪的问题?????
然后一步步调试,看寄存器的值,还是不行.真是日了X了.
………………………………………………………………
用STM32F410RB NUCLEO 虚拟串口试试?
OK!能接受到!!!!.就是抓不到数据,
测试下自己的程序吧!!
我去从虚拟串口也能看到.卧槽但是还是抓不到数据
测试下这个引脚
我去可以有数据
等等!我好想忽略了什么
用万用表测试一下,问题找到了
原来是这样,原理图的SB63的0欧电阻没有焊,所以PA2 PA3 就是NC:sleepy:
板子介绍的文档也没看才导致这个问题,抓抓不到TX数据:'(
原理图看的还是少 不知道那个代表什么意思 :L
(可能是我没仔细看文档)
好了就到这里了.一起交流827230081如有不足欢迎指出
新人发帖!多多关照!
谢谢
附件代码
感谢楼主分享!!
楼主截图的时候,qq截图那一排按钮,有图形文字功能,这样会比用鼠标写较好看 沐紫 发表于 2015-12-22 10:52
感谢楼主分享!!
楼主截图的时候,qq截图那一排按钮,有图形文字功能,这样会比用鼠标写较好看 ...
好的谢谢:)
1
不错,不错,赞一个。 :loveliness:多谢分享。。
我的颈 发表于 2015-12-22 11:11
好的谢谢
太丑啦;P 感谢分享 SB63/62这些应该是跳线,方便调试用的应该。 huaiqiao 发表于 2015-12-24 09:03
SB63/62这些应该是跳线,方便调试用的应该。
这调试起来,不是很方便,还要烙铁什么的 支持下子!(自己不会写,所以只能做回帖众了。。)
跟随STM32FX的这些年来的心得:
1、动手前看原理图以及实物对照,很重要。(盲目去做会做无用功)
2、STM32F系列的外设寄存器变化不是很大,CM3、CM0只有部分寄存器的位有增减。(个人感觉看中文版的手册比较舒心,E文的手册基本是拿来当勘误用的,避免中文版翻译有遗漏。:))
3、个人习惯:初始化函数一般不直接操作寄存器,毕竟初始化只发生有限的次数,不必为了那点时间来降低可移植性(指STM32F系列之间的移植)。在主循环和中断处理,一般是会直接寄存器操作,以优化代码。
(个人愚见,欢迎评论!)
页:
[1]
2