专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
单独对stm32单片机某一位进行操作应该怎么做呢 ?
2019-07-14 15:15
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
4001
9
1712
STM32
的寄存器是32位的,操作也只能是以 32位的形式操作。如果想单独对某一位操做 应该怎么做呢 ?就像8位的
单片机
一样可以写作PTA_PTA1=1(表示A口pin1置1). 用结构体联合体的方式应该怎么做呢?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
qiangqzuo
1楼-- · 2019-07-15 18:41
BSRR
BRR, 相关位只有写1才会起作用,写0无效
//GPIOx_ODR: 端口输出数据寄存器,它的31:16位保留不用,15:0对应x的相应引脚,他只能以16位方式操作。
//GPIOx_BSRR:端口位设置/复位寄存器,它的31:16位是清除位(BR15:BR0),用来复位对应的引脚;15:0位是设置位(BS15:BS0),用来设置对应的引脚。无论是BR还是BS,都是1有效,即相应位为0时无效,这样可以保证操作某个端口时对其他端口无影响。
//GPIOx_BRR:端口位复位寄存器,它的31:16位保留不用,15:0相当于GPIOx_BSRR的高16位即BR。
//事例:将GPIOB的Pin0设置位高,Pin1设置为低(要求,所有操作均对GPIOB的其他端口无影响 )
// 方法1: GPIOB->ODR|= GPIO_Pin_0;
// GPIOB->ODR&=~GPIO_Pin_1;
// 方法2: GPIOB->BSRR= GPIO_Pin_0;
// GPIOB->BSRR= GPIO_Pin_1<<16;
// 方法3: GPIOB->BSRR= GPIO_Pin_0;
// GPIOB->BRR = GPIO_Pin_1;
//注意:从上面可以看出采用方法二有可能将一个端口同时设置和复位,因此STM32规定,如果同时设置了BSx和BRx的对应位,BSx位起作用。
//GPIOB->ODR ^= GPIO_Pin_0; 位取反,异或方式
加载中...
lee_st
2楼-- · 2019-07-15 23:42
也真是奇葩问题了
加载中...
lee_st
3楼-- · 2019-07-16 01:05
那么简单的东西
加载中...
上一页
1
2
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
BSRR
BRR, 相关位只有写1才会起作用,写0无效
//GPIOx_ODR: 端口输出数据寄存器,它的31:16位保留不用,15:0对应x的相应引脚,他只能以16位方式操作。
//GPIOx_BSRR:端口位设置/复位寄存器,它的31:16位是清除位(BR15:BR0),用来复位对应的引脚;15:0位是设置位(BS15:BS0),用来设置对应的引脚。无论是BR还是BS,都是1有效,即相应位为0时无效,这样可以保证操作某个端口时对其他端口无影响。
//GPIOx_BRR:端口位复位寄存器,它的31:16位保留不用,15:0相当于GPIOx_BSRR的高16位即BR。
//事例:将GPIOB的Pin0设置位高,Pin1设置为低(要求,所有操作均对GPIOB的其他端口无影响 )
// 方法1: GPIOB->ODR|= GPIO_Pin_0;
// GPIOB->ODR&=~GPIO_Pin_1;
// 方法2: GPIOB->BSRR= GPIO_Pin_0;
// GPIOB->BSRR= GPIO_Pin_1<<16;
// 方法3: GPIOB->BSRR= GPIO_Pin_0;
// GPIOB->BRR = GPIO_Pin_1;
//注意:从上面可以看出采用方法二有可能将一个端口同时设置和复位,因此STM32规定,如果同时设置了BSx和BRx的对应位,BSx位起作用。
//GPIOB->ODR ^= GPIO_Pin_0; 位取反,异或方式
一周热门 更多>