野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8841|回复: 7

火哥自己写库的程序单步调试时遇到的BUG

[复制链接]
发表于 2017-4-24 15:52:47 | 显示全部楼层 |阅读模式
本帖最后由 风落梵蒂冈 于 2017-4-24 15:56 编辑

在单步debug火哥的历程时 发现只要mode寄存器在Init 函数中被赋值 LED立刻被点亮,无论是否执行ResetBits()函数



QQ截图20170424154909.png

进入Init函数

进入Init函数

此时执行到初始化结构体 对各成员赋值

此时执行到初始化结构体 对各成员赋值

我实际用的是GPIO_Pin_12 但是LED依然亮 在图三配置完MODE寄存器gpio为输出后 LED就一直亮

我实际用的是GPIO_Pin_12 但是LED依然亮 在图三配置完MODE寄存器gpio为输出后 LED就一直亮
回复

使用道具 举报

发表于 2017-4-24 15:55:34 | 显示全部楼层
这个我在视频里面有分析为什么

原因是只要IO口配置为推挽输出,就配置MODE寄存器,那么ODR寄存器的默认值就会通过IO口输出,而ODR默认的值都是0,LED又是低电平点亮,我这么说你明白了没。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 16:02:43 | 显示全部楼层
可是程序里面是先配置的MODE寄存器 最后才配置的推挽输出的 单步执行还没有配置到输出类型为推挽输出啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 16:03:20 | 显示全部楼层
我懂了火哥…………怪我没看清楚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 16:03:55 | 显示全部楼层
不好意思火哥 没看清楚if语句的括号 谢谢火哥啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 16:07:46 | 显示全部楼层
推挽输出的默认值为0x00  所以配置完mode 管脚就直接输推挽输出了 懂了懂了 楼主智障 多谢火哥点拨 所以以后控制LED还是共阴极控制吧
回复 支持 反对

使用道具 举报

发表于 2017-4-24 17:36:43 | 显示全部楼层
风落梵蒂冈 发表于 2017-4-24 16:07
推挽输出的默认值为0x00  所以配置完mode 管脚就直接输推挽输出了 懂了懂了 楼主智障 多谢火哥点拨 所以以 ...

,初学是这样的啦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 21:54:22 | 显示全部楼层
恩呢 总会遇到很多智障的问题 还是火哥的视频看的不够仔细
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-8 15:15 , Processed in 0.030565 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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