打印

如何能像51那样对端口进行操作呢?

[复制链接]
1408|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2013-11-6 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位朋友知道怎么实现IO低八位并行输出或输入且不影响高八位,能像51那样对端口进行操作?求赐教啊
……
沙发
feilusia| | 2013-11-6 16:11 | 只看该作者
比如A口输出低八位0x55:
GPIOA->ODR &= 0xff00;         //清除低八位
GPIOA->ODR |= 0x0055;         //赋值低八位

比如读A口低八位的值:
m = GPIOA->IDR & 0x00ff;

使用特权

评论回复
板凳
wujwul| | 2013-11-6 16:26 | 只看该作者
楼上正解

使用特权

评论回复
地板
zhaoxinzxzx| | 2013-11-6 16:29 | 只看该作者
输出数据STM32有更好的办法,用BSRR这个寄存器:
GPIOx->BSRR = (((uint32_t)(~data_u8) & 0x000000FF) << 16) | (uint32_t)data_u8;

使用特权

评论回复
5
拿起书本| | 2013-11-6 16:35 | 只看该作者
一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位的某位为'0',则对应的I/O端口不变。
二、置GPIOD->BSRR高16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BSRR高16位的某位为'0',则对应的I/O端口不变。
三、置GPIOD->BRR低16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BRR低16位的某位为'0',则对应的I/O端口不变。

使用特权

评论回复
6
huzi2099| | 2013-11-6 20:22 | 只看该作者
前面那个不算位操作,后面那个是.
位带操作这个例子
D:\Keil\ARM\Examples\ST\STM32F10xFWLib\Examples\CortexM3\BitBand

使用特权

评论回复
7
chuangpu| | 2013-11-6 21:26 | 只看该作者
直接配置单片机的寄存器  楼主   这个技术手册里都有的   顶一个   

使用特权

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

本版积分规则

460

主题

2188

帖子

12

粉丝