如何对变量进行对位置1与对位清0

如何对变量进行对位置1与对位清0
在单片机开发或者驱动开发的过程中,需要对寄存器的某个位进行置1或者清0操作,且不影响其它位,那是如何进行实现的呢,先以某个变量为例子
在这里插入图片描述
上面看懂之后,以某个led开发为例子
led.h

#ifndef __LED_H
#define __LED_H

#include "stm32f4xx.h"

#define RCC_AHB1ENR			*((volatile  unsigned int *)(0x40023800+0x30))  //值强制类型转换为地址,地址解引用,可访问地址空间的值
#define	GPIOF_MODER      	*((volatile  unsigned int *)(0x40021400+0x00))	//值强制类型转换为地址,地址解引用,可访问地址空间的值
#define	GPIOF_OTYPER     	*((volatile  unsigned int *)(0x40021400+0x04))	//值强制类型转换为地址,地址解引用,可访问地址空间的值
#define	GPIOF_OSPEEDR    	*((volatile  unsigned int *)(0x40021400+0x08))	//值强制类型转换为地址,地址解引用,可访问地址空间的值
#define	GPIOF_PUPDR      	*((volatile  unsigned int *)(0x40021400+0x0C))	//值强制类型转换为地址,地址解引用,可访问地址空间的值


void Led_Init(void);


#endif

led.c

#include "led.h"

/******************************************
函数说明:LED0初始化
引脚说明:
LED0连接在PF9
PF9输出高电平,LED0灭;PF9输出低电平,LED0亮。
*******************************************/

void Led_Init(void)
{
	//第五位置1,使能GPIOF组时钟
	RCC_AHB1ENR |= (1<<5);
	
	//设置为通用输出模式 19:18 = 0 1
	GPIOF_MODER	&= ~(1<<19);
	GPIOF_MODER	|=  (1<<18);
	
	//输出推挽 位9 = 0
	GPIOF_OTYPER &= ~(1<<9);
	
	//速度50MHZ 19:18 = 1:0
	GPIOF_OSPEEDR |=  (1<<19);
	GPIOF_OSPEEDR &= ~(1<<18);
	
	//设置为上拉 19:18 = 0 1
	GPIOF_PUPDR &= ~(1<<19);
	GPIOF_PUPDR |=  (1<<18);
}

以上就是对位置1与对位清0在开发中的使用了。

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C是最好的编程语言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值