OpenEdv-开源电子网

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

GPIO问题

[复制链接]

83

主题

349

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2012-8-10
在线时间
13 小时
发表于 2012-10-9 11:59:36 | 显示全部楼层 |阅读模式

一直有个疑问:
 1.在51中,玩led的时候,喜欢这么写 P1=0xaa;  这8个端口都用上了,不知道stm32能这样吗,例如PA=0xaaaa;
 2.stm32用到很多IO时,设置上拉模式的时候,是一个一个的设置吗 (红色字体部分)?
例如
#define led1 PAout(4)
#define led2 PAout(5)
#define led3 PAout(6)
#define led4 PAout(7)

#define led5 PBout(0)
#define led6 PBout(1)
#define led7 PBout(2)
#define led8 PBout(3)

void led_init(void)
{           //stm32在配置外设时,无论任何时候都要先使能该功能的时钟
 RCC->APB2ENR|=1<<2;      //使能PORTA时钟        时钟使能寄存器  1位  15-31位保留  始终读为0
 RCC->APB2ENR|=1<<3;

 GPIOA->CRL&=0X0000FFFF;  //清掉该位以前的设置    与   保持原先的设置
 GPIOA->CRL|=0X33330000;  //设置为PA的4.5.6.7为推挽输出  
 GPIOA->ODR|=1<<4;   //设置为PA.4为上拉模式
 GPIOA->ODR|=1<<5;
 GPIOA->ODR|=1<<6;
 GPIOA->ODR|=1<<7;

 GPIOB->CRL&=0XFFFF0000;
 GPIOB->CRL|=0X00003333;
 GPIOB->ODR|=1<<0;
 GPIOB->ODR|=1<<1;
 GPIOB->ODR|=1<<2;
 GPIOB->ODR|=1<<3;
}

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

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-10-9 12:49:02 | 显示全部楼层
第一个问题,如果你只写不读,直接 #define A GPIOA->ODR 这样就行,
但是如果还想 u16 x = A; 这样的语句是像51一样是用来读端口数据的话,是很难做到的,不过可以利用C++来完成。

第二个问题,是可以一次性设置的

GPIOB->ODR|=1<<0;
 GPIOB->ODR|=1<<1;
可以写成
GPIOB->ODR|=0x3;
GPIO的ODR是一个32位寄存器,可以一次性设置的。
https://github.com/roxma
回复 支持 反对

使用道具 举报

27

主题

148

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2012-7-25
在线时间
0 小时
发表于 2012-10-9 14:05:22 | 显示全部楼层
回复【2楼】Pony279:
---------------------------------
库函数里自带读写。
读是没什么问题的,但写的时候比较麻烦。除非你一次把16个端口全用在一个功能上了。
回复 支持 反对

使用道具 举报

83

主题

349

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2012-8-10
在线时间
13 小时
 楼主| 发表于 2012-10-9 17:08:22 | 显示全部楼层
回复【2楼】Pony279:
-------------------------------正解
回复 支持 反对

使用道具 举报

14

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2012-9-27
在线时间
4 小时
发表于 2012-10-10 16:36:14 | 显示全部楼层
同意一楼的观点。。。
回复 支持 反对

使用道具 举报

22

主题

436

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2012-8-6
在线时间
2 小时
发表于 2012-10-10 19:52:35 | 显示全部楼层
0.0
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 06:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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