STM32如何实现同时读一个端口的中某几个管脚的数据
我用STM32的PB端口作为数据线,0~7为输入,8~15为输出,现在想读出0~7端口的电平值赋给Value,那么这个函数该怎么写?...
我用STM32的PB端口作为数据线,0~7为输入,8~15为输出,现在想读出0~7端口的电平值赋给Value,那么这个函数该怎么写?
展开
展开全部
value=GPIOB->IDR&0x00FF;
就这么简单。
就这么简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-08-25 广告
2023-08-25 广告
根据公开信息,STM32F107的价格因型号、规格、封装和供应商等因素而异。在一些电子市场中,它的价格可能在**10.00-45.00元/PCS**之间。需要注意的是,这些价格可能不是最新的,因此请在购买前与供应商确认最新的价格和型号。
S...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
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;// 使用规则一和规则二
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询