STM32如何实现同时读一个端口的中某几个管脚的数据
我用STM32的PB端口作为数据线,0~7为输入,8~15为输出,现在想读出0~7端口的电平值赋给Value,那么这个函数该怎么写?...
我用STM32的PB端口作为数据线,0~7为输入,8~15为输出,现在想读出0~7端口的电平值赋给Value,那么这个函数该怎么写?
展开
3个回答
展开全部
value=GPIOB->IDR&0x00FF;
就这么简单。
就这么简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
u16 Value = GPIO_ReadInputData(GPIOB);
Value &= 0x00ff;
没试过,不知道写的对不对
Value &= 0x00ff;
没试过,不知道写的对不对
追问
应该不是这样写吧,端口8~15为输出,要读它的端口电平应该是GPIO_ReadoutputData()这个函数吧?我现在很怀疑这样的设计能不能实现!
追答
不是说读出0-7输入端口的电平 如果是8-15输出端口,那就value = (GPIOB->ODR & 0xFF00)>>2;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
规则:
一、置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;// 使用规则一和规则二
一、置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;// 使用规则一和规则二
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询