stm32用寄存器和位操作编写跑马灯

寄存器:

根据硬件链接找到对应的io口

步骤:

 1.第一步 同库函数过程建立工程模板,建立初始化函数文件

2.第二步编写初始化函数不同,直接对寄存器赋值来选择输出模式和高低电平

3在main中调用时钟初始化函数和串口初始化(配置寄存器选择io,选择模式)直接给数据输出寄存器赋值获得电平。

 

二、位操作

位操作有范围,位操作:通过改写寄存器位映射的地址来改写这个位。 

 

位操作写跑马灯,可以直接用库函数版本写的led.c的初始化函数,区别在于最终的main.c中对输出高低电平由位操作控制较为方便,因为有封装好的映射函数,输出例子:PBout(对应的pin)=1/0;输入PBin()=1/0;跑马灯主函数:

本质上都是操作寄存器。要熟悉寄存器操作。

三蜂鸣器实验

 不能直接通过io口驱动大功率器件

复位时时浮空状态。

与跑马灯不同的在于io不同其余一样

串口初始化:void BEEP_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
     
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     //使能GPIOB端口时钟
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                 //BEEP-->PB.8 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);     //根据参数初始化GPIOB.8
 
 GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出

}

 然后引用在主函数中用位操作或其他给5和8io输出高低电平即可。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值