OpenEdv-开源电子网

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

STM32l0系列 usart2寄存器操作 usart2->BRR = 0x...不执行

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-20
在线时间
0 小时
发表于 2015-4-20 18:07:44 | 显示全部楼层 |阅读模式
5金钱


选用PA2为输出Tx,设置USART2->BBR,波特率设为9600,换算为16进制传入,

但是烧进去发现没有数据输出,调试的时候发现,USART2->BBR |= 0X0EA6 这句并没有作用



寄存器里的值并没有改变。

但是其他的寄存器操作语句又可以正常执行



我用的是nucleo L053R8 求大神指点!!o(≧v≦)o~~阿里嘎多~



ε=ε=ε=┏(゜ロ゜;)┛
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-21 00:13:32 | 显示全部楼层
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-20
在线时间
0 小时
 楼主| 发表于 2015-4-21 09:43:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥~我把那一部分寄存器操作改成了库函数操作,还是不行,是因为我的板子的问题?~~{{{(>_<)}}}好伤心。。
ε=ε=ε=┏(゜ロ゜;)┛
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-3 19:57:11 | 显示全部楼层
dantemin 发表于 2015-4-21 09:43
回复【2楼】正点原子:
---------------------------------
原子哥~我把那一部分寄存器操作改成了库函数操作 ...

说不准哦,没用过L0
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2018-7-14
在线时间
19 小时
发表于 2020-7-24 15:11:30 | 显示全部楼层
今天也遇见了同样的问题,来论坛找答案,发现也有人和我的问题类似。
通过仿真看见 USART各个寄存器的值全为0.没有任何变化。
USART1->BRR=mantissa;

USART1->CR1=0x0000252c;//一个起始位,8个数据位,1个停止位,
USART1->CR1|=1<<6;//发送完成中断使能
USART1->CR2=0x00000000;//1个停止位
但是我吧正点原子的里程下载进去仿真发现USART各个寄存器的值可以修改。通过对比我发现
RCC->APB2RSTR|=1<<14;//串口1复位
RCC->APB2RSTR&=~(1<<14);//串口1结束复位
红色语句是不能省略的,加上上面这条红色的代码就可一乐。。。这里可能感到比较疑惑,因为在STM32参考手册中明确0无作用,所以很多人就觉得无作用就可以不用写。
USART1RST: USART1复位 (USART1 reset)
由软件置’1’或清’0’
0:无作用;
1:复位USART1。
但你通过库函数版本意法半导体给的官方例程
void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
{
    /* Check the parameters */
     assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
     assert_param(IS_FUNCTIONAL_STATE(NewState));
     if (NewState != DISABLE)
     {
      RCC->APB2RSTR |= RCC_APB2Periph;
     }
    else
    {
      RCC->APB2RSTR &= ~RCC_APB2Periph;
    }

}
就是复位函数
RCC_APB2PeriphResetCmd,
DISABLE时需要执行该语句RCC->APB2RSTR &= ~RCC_APB2Periph;

1.png
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 01:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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