历史上的今天
今天是:2025年03月30日(星期日)
2021年03月30日 | STM32 同一I/O口下 多个口同时操作
2021-03-30 来源:eefocus

规则:
一、置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端口不变。
例如:
1)要设置D0、D5、D10、D11为高,而保持其它I/O口不变,只需一行语句:
GPIOD->BSRR = 0x0C21;// 使用规则一
2)要设置D1、D3、D14、D15为低,而保持其它I/O口不变,只需一行语句:
GPIOD->BRR = 0xC00A;// 使用规则三
3)要同时设置D0、D5、D10、D11为高,设置D1、D3、D14、D15为低,而保持其它I/O口不变,也只需一行语句:
GPIOD->BSRR = 0xC00A0C21;// 使用规则一和规则二
如果使用了PD口的PD8-PD15高8位,假设data为8位要写入的数据:
GPIO_SetBits(GPIOD, data & 0xff00);
GPIO_ResetBits(GPIOD, (~data & 0xff00));
也可以直接操作这两个寄存器:
GPIOD->BSRR = data & 0xff00;
GPIOD->BRR = ~data & 0xff00;
如果使用了PD口的PD0-PD7低8位,假设data为8位要写入的数据:
GPIO_SetBits(GPIOD, data & 0x00ff);
GPIO_ResetBits(GPIOD, (~data & 0x00ff));
也可以直接操作这两个寄存器:
GPIOD->BSRR = data & 0x00ff;
GPIOD->BRR = ~data & 0x00ff;
史海拾趣
|
发一个“鸡肋”,当年27元液晶做的电子书,数码相册,“MP3” 本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 控制器是LPC2132,从sd卡读取数据,支持汉字文件名显示,文件浏览功能,BMP图片浏览,TXT电子书阅读功能 程序是参考网站上其他人的东西搞得,感谢正点原子,波仔提供的资料 程序BUG有N多, ...… 查看全部问答> |
|
module test11(clk,din,reset,dout); input clk,reset; //时钟/复位 input [7:0]din; //输入数据 output dout; reg [3:0]locate_47; // ...… 查看全部问答> |
|
我前些天修改PXA270的EBOOT引导程序,想实现SD卡更新NK的方式,在调试EBOOT中,因为没有完善的调试工具,就是通过串口打印信息(DWN)来调试的,造成程序跑飞后,DWN没有串口信息输出了,我把我事先保存的EBOOT.nb0烧到FLASH中还不行,进入不了菜单 ...… 查看全部问答> |
|
2003 达林顿晶体管阵列 简介 特点及应用 替代型号:ULN2003 UF2003 QL2003 VTSR2003 概述 2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达 ...… 查看全部问答> |
|
现在在做一个项目,需要用lpc114同时控制两个spi设备。读写一个spi 的flash,发送数据给一个spi的液晶屏显示。请问spi0与spi1能不能同时工作呢?… 查看全部问答> |
|
高速无缓冲ADC的反冲 如今,高速模数转换器(ADC)的种类和供应商众多,要选择一 款合适的产品可能并非易事。当您缩小搜索范围后,最终的抉 择往往是选取缓冲型还是无缓冲型(开关电容)转换器。尺寸 和功耗受限的应用通常倾向于无缓冲型。无论 ...… 查看全部问答> |




