打印

STM32 PORT口8位输出程序怎么写?

[复制链接]
7531|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zcl_l|  楼主 | 2009-5-15 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要用PORTA口低8位送出D0-D7数据,高8位还做GPIO其他功能口(有输入也有输出),那么我怎么写低8位的数据输出程序么? 用GPIO_Write(GPIOA, 0x????)  谁能帮忙简单写一下
沙发
vigia| | 2009-5-15 10:26 | 只看该作者

用GPIOx_BSRR寄存器

BRy位写0无影响写1复位相应bit位
BSy位写0无影响写1置位相应bit位

使用特权

评论回复
板凳
bhsdlmj| | 2009-5-15 10:32 | 只看该作者

1

GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 ......GPIO_Pin_7 );

或者(*((volatile unsigned long int *)0x40010810)) = ((unsigned short int)0x00FF);

使用特权

评论回复
地板
zcl_l|  楼主 | 2009-5-16 11:20 | 只看该作者

TO: bhsdlmj

你的方法是设置了全是1,我这可是数据口,内容可不全是1

使用特权

评论回复
5
香水城| | 2009-5-16 13:02 | 只看该作者

楼主直接用2楼介绍的方法,很方便的

例如要对PORTA口低8位送出D0-D7数据,而不触及高8位的数据:

假定要送出D0-D7的数据变量为ldata,
  unsigned char ldata;
  GPIOA_BSRR = ((unsigned int)~ldata << 16) | ldata;

如果ldata=0x34,这相当于设置:
  GPIOA_BSRR=0x00CB0034;

使用特权

评论回复
6
zcl_l|  楼主 | 2009-5-20 23:21 | 只看该作者

多谢香主

我赶紧试试

使用特权

评论回复
7
junyee| | 2015-11-6 09:47 | 只看该作者
香水城 发表于 2009-5-16 13:02
例如要对PORTA口低8位送出D0-D7数据,而不触及高8位的数据:假定要送出D0-D7的数据变量为ldata,&nbsp;&nbs ...

我最近刚学STM32,
我想问一下,
GPIOA_BSRR = ((unsigned int)~ldata << 16) | ldata;
改成
GPIOA_BSRR = (0x00ff0000) | data ;
可以吗?先把所有低8位清空,再重写低8位。会不会比先取反清空的执行要快一点点点?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

97

帖子

1

粉丝