OpenEdv-开源电子网

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

stm32中的io端口用寄存器设置中出了问题 求助

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-8-18
在线时间
0 小时
发表于 2013-8-18 13:35:21 | 显示全部楼层 |阅读模式
我想将A口中的12 13 14设置成推挽输出  用寄存器的代码如下
GPIOA->CRH&=0xfff0ffff;
 GPIOA->CRH|=0X00070000; // 01110111
 GPIOA->ODR|=1<<12;
 GPIOA->CRH&=0xff0fffff;
 GPIOA->CRH|=0X00700000; // 01110111
 GPIOA->ODR|=1<<13;
 GPIOA->CRH&=0xf0ffffff;
 GPIOA->CRH|=0X07000000; // 01110111
 GPIOA->ODR|=1<<14;

我觉得应该是没什么问题的  怎么就是不对

我用函数就可以 代码如下
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_14; //所有GPIO为同一类型端口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出的最大频率为50HZ
  GPIO_Init(GPIOA, &GPIO_InitStructure);   //初始化GPIOA端口
  改成这个就可以  真不知道是什么原因  求大神帮助啊




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-8-18
在线时间
0 小时
 楼主| 发表于 2013-8-18 13:46:51 | 显示全部楼层
终于解决了  我把GPIOA->CRH|=0X00070000;改成GPIOA->CRH|=0X00030000;就可以了 以前我把端口设置成通用输出开漏  改成了通用输出推拉就可以了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-18 14:29:56 | 显示全部楼层
恭喜
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 23:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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