你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2748|回复: 17

【NUCLEO-F410RB开发】+串口之我见

[复制链接]

10

主题

124

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-5
发表于 2015-12-22 10:40:13 | 显示全部楼层 |阅读模式
本帖最后由 我的颈 于 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)(二进制)

QQ截图20151222094431.png
接是着GPIO速度设置我们选择 HIGH Speed(OSPEEDR=10)
QQ截图20151222094447.png
接下来GPIO上拉设置我们选择Pull-up(PUPDR=01)
QQ截图20151222094513.png

最后是GPIO复用,首先看下F410 datasheet的引脚复用

我们看到 PA2 PA3 在AF7 (TX,RX设置相同)
QQ截图20151222093324.png
所以呢我们设置GPIO复用  AF7(AFRL=0111)
QQ截图20151222094528.png
好的GPIO就设置好了.我们需要记住的是流程,具体为甚?
我也不知道.我就知道这么用.新手懂得不多!!


2.     2 然后是USART配置,这个好说
只需要配置USART2_CR1寄存器的四项(因人而异)
       USART2_CR的第5位 接收缓存非空
       USART2_CR的第3位 TX使能
       USART2_CR的第2位 RX使能
       USART2_CR的第13位 USART使能

QQ截图20151222093215.png
QQ截图20151222093147.png
       然后是USART_BBR波特率设置

QQ截图20151222092853.png
       有公式带进去 一元一次方程解得27.126
       DIV_Mantissa[11:0]放整数 取27
DIV_Fraction[3:0]         放小数 取13


然后是中断处理函数了
放代码

  1. void USART2_IRQHandler(void)
  2. {
  3.         if(USART2->SR&(1<<5))//?????        //是否接收中断
  4.         {        
  5.                 USART2->DR=USART2->DR;                //接收在发送
  6.         }         
  7. }


  8. void USART2_Init(void)
  9. {
  10.         RCC->AHB1ENR                |=1<<0;                //GPIOA 时钟
  11.         
  12.         GPIOA->MODER                |=2<<4;                //PA2复用模式
  13.         GPIOA->MODER                |=2<<6;                //PA3复用模式
  14.         GPIOA->OSPEEDR        |=2<<4;                //IO速度
  15.         GPIOA->OSPEEDR        |=2<<6;                //IO速度
  16.         GPIOA->PUPDR                |=1<<4;                //上拉
  17.         GPIOA->PUPDR                |=1<<6;                //上拉
  18.         GPIOA->AFR[0]                |=7<<12;                //复用AF7 RX
  19.         GPIOA->AFR[0]                |=7<<8;                //复用AF7 TX
  20.         USART2->SR                        &=~(1<<5);        //清除接收中断
  21.         RCC->APB1ENR                |=1<<17;                //USART2时钟
  22.         USART2->BRR                |=27<<4;                //波特率
  23.         USART2->BRR                |=13<<0;                //小数位
  24.         USART2->CR1                |=1<<5;                //开启接收中断
  25.         USART2->CR1                |=1<<3;                //接收使能
  26.         USART2->CR1                |=1<<2;                //发送使能
  27.         USART2->CR1                |=1<<13;                //USART 使能
  28.         NVIC_Init(2,3,3,USART2_IRQn);        //中断优先级
  29. }
复制代码





3然后是调试了遇到了问题(只怪我太马虎)
看下这个引脚的图片 , NUCLEO ,PA2 PA3 复用TX,RX

QQ截图20151222092401.png

主函数里一直发送数据,然后用分析仪抓取,什么都抓不到,
QQ截图20151222102216.png
有问题?好从头分析,使用STM32F410RBNUCLEO自带的STlink
一步步的调试,看寄存器,我靠设置没问题还是不行!!!!!
用官方库函数的,还是抓不到我靠哪的问题?????

然后一步步调试,看寄存器的值,还是不行.真是日了X.
………………………………………………………………
STM32F410RB NUCLEO 虚拟串口试试?
QQ截图20151222102942.png


OK!能接受到!!!!.就是抓不到数据,
测试下自己的程序吧!!
我去从虚拟串口也能看到.卧槽但是还是抓不到数据

测试下这个引脚
QQ截图20151222102725.png
我去可以有数据
QQ截图20151222102238.png
等等!我好想忽略了什么

用万用表测试一下,问题找到了
QQ截图20151222102655.png
原来是这样,原理图的SB63的0欧电阻没有焊,所以PA2 PA3 就是NC
板子介绍的文档也没看才导致这个问题,抓抓不到TX数据
原理图看的还是少 不知道那个代表什么意思
(可能是我没仔细看文档)
QQ截图20151222092454.png
好了就到这里了.一起交流如有不足欢迎指出
新人发帖!多多关照!
谢谢
附件代码
可以在STM32F410 NUCLEO运行01.rar (98.17 KB, 下载次数: 22)

评分

参与人数 1ST金币 +30 收起 理由
沐紫 + 30

查看全部评分

回复

使用道具 举报

307

主题

3125

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2015-12-22 10:52:42 | 显示全部楼层
感谢楼主分享!!

楼主截图的时候,qq截图那一排按钮,有图形文字功能,这样会比用鼠标写较好看 1.png
回复 支持 反对

使用道具 举报

10

主题

124

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-5
 楼主| 发表于 2015-12-22 11:11:04 | 显示全部楼层
沐紫 发表于 2015-12-22 10:52
感谢楼主分享!!

楼主截图的时候,qq截图那一排按钮,有图形文字功能,这样会比用鼠标写较好看 ...

好的谢谢
  1. 1
复制代码



QQ截图20151222110931.png
回复 支持 反对

使用道具 举报

3

主题

1377

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-12-22 11:57:28 | 显示全部楼层
不错,不错,赞一个。
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2015-12-22 13:12:12 | 显示全部楼层
多谢分享。。
STMCU-Logo.png
回复 支持 反对

使用道具 举报

307

主题

3125

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2015-12-22 13:13:02 | 显示全部楼层

太丑啦
回复 支持 反对

使用道具 举报

41

主题

2476

回帖

282

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-12-22 15:32:08 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

1

主题

902

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-12-7
发表于 2015-12-24 09:03:56 | 显示全部楼层
SB63/62这些应该是跳线,方便调试用的应该。
回复 支持 反对

使用道具 举报

10

主题

124

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-5
 楼主| 发表于 2015-12-24 09:45:32 | 显示全部楼层
huaiqiao 发表于 2015-12-24 09:03
SB63/62这些应该是跳线,方便调试用的应该。

这调试起来,不是很方便,还要烙铁什么的
回复 支持 反对

使用道具 举报

15

主题

930

回帖

29

蝴蝶豆

金牌会员

最后登录
2020-8-17
发表于 2015-12-24 10:14:05 | 显示全部楼层
支持下子!(自己不会写,所以只能做回帖众了。。)

跟随STM32FX的这些年来的心得:
1、动手前看原理图以及实物对照,很重要。(盲目去做会做无用功)
2、STM32F系列的外设寄存器变化不是很大,CM3、CM0只有部分寄存器的位有增减。(个人感觉看中文版的手册比较舒心,E文的手册基本是拿来当勘误用的,避免中文版翻译有遗漏。
3、个人习惯:初始化函数一般不直接操作寄存器,毕竟初始化只发生有限的次数,不必为了那点时间来降低可移植性(指STM32F系列之间的移植)。在主循环和中断处理,一般是会直接寄存器操作,以优化代码。
(个人愚见,欢迎评论!)
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版