完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
GPIOE 第5脚接LED负极通过限流电阻到3.3V
程序如下。只配置了RCC 和输出模式,灯竟然亮了。为什么呢?并没有给IO口RESET呀! #include "STM32f10x.h" int main() { RCC->APB2ENR|=1<<6; //RCC_APB2ENR_GPIOE GPIOE->CRL|=(1<<20); // GPIOE_CEL 10MHZ PUSH-PULL OUTPUT while(1); } 并且试了一下,上面两条程序少一条都不能点亮。这是为什么呢?请高人指点一下。 |
|
相关推荐
7个回答
|
|
你这个现象跟相关寄存器的复位值有关系 首先是你的现有代码: 1 RCC->APB2ENR|=1<<6; //RCC_APB2ENR_GPIOE 2 GPIOE->CRL|=(1<<20); // GPIOE_CEL 10MHZ PUSH-PULL OUTPUT 第一行打开时钟,第二行是将GPIOE->CRL寄存器的第二十位置为1,我们看一下GPIOE->CRL寄存器的内容,如下图: 关键来了,GPIOE->CRL寄存器的复位值为0x44444444,意思就是在默认情况下GPIOE->CRL的第23位为0,第22位为1,第21位为0,第20位为0. 然后你的第二行代码又将第20位置为1,这是查看寄存器下方的说明可以知道,你当然已经将该IO口配置为通用开漏输出模式,并且输出频率为最大速度10MHz。 然后是数据输出寄存器GPIOE-ODR 通过文档可知这个寄存器的默认值为0x00000000,也就是默认输出低电平,在结合你目前的电路,小灯自然就会亮了~~~
最佳答案
|
|
|
|
这个不用先上操作系统么?系统启动起来以后才可运行相关程序啊?如果是51芯片是不是要先编译成对应的芯片能识别的.hex文件啊?
|
|
|
|
有上拉吧
|
|
|
|
明白了,但是还有一事不明我按野火的寄存器点亮LED灯视频写如下代码LED死活不亮,请指点一下,错在哪里了
int main(void) { *(unsigned int*)0x40010C00|=3<<20; //GPIOB_CRL *(unsigned int*)0x40021018|=((1)<<3); //RCC_APB2ENR_GPIOB while(1); } |
|
|
|
wangyanming101 发表于 2017-3-20 20:01 竟然两条代码 颠倒顺序就可以点亮, |
|
|
|
|
|
|
|
学习中!刚开始学习!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1307 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1234 浏览 3 评论
2313 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1404 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1834 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 14:20 , Processed in 1.004811 second(s), Total 104, Slave 90 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号