LED闪烁+LED流水灯+蜂鸣器

【闪烁一个LED】

  • 流程
  1. 使用RCC开启GPIO的时钟(时钟默认关闭)
  2. 使用GPIO_Init函数初始化GPIO
  3. 使用输出或输入函数控制GPIO口
  • RCC和GPIO有哪些库函数
  • 点开rcc.h文件,一直拖到最下面是库函数所有函数的声明
  • 点开gpio.h文件,一直拖到最下面是库函数所有函数的声明

  • 用这些函数来实现LED闪烁(前面已经实现点灯)
  • 逻辑是【(点亮LED+延时)+(熄灭LED+延时)】循环

     

     然后就闪烁了,视频不好上传

【流水灯】虽然我不懂为什么两个灯还要搞跑马灯,就当掌握套路吧

 

 好离谱,就是多控制了一个端口,两个灯也流不起来啊。

其他的一些知识(如果有好几个灯,端口分别是PA0到PA2)

  • 如何增加端口的设置:
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_2;

为什么可以用”或“来设置:由定义可知P0口对应的是0X0001,P1口对应的是0X0002,P2口对应的是0X0004

 把16进制换成2进制,分别是:0000 0000 0000 0001

把16进制换成2进制,分别是:0000 0000 0000 0010

把16进制换成2进制,分别是:0000 0000 0000 0100   

进行“按位或”的操作,结果是:0000 0000 0000 0111。这样就同时选中了3个端口。 

  • 时钟控制和GPIO_SetBits这一项同样也可以用按位或的操作方式来选择多个外设 
  • 同时控制多个端口,可以使用GPIO_Write这个函数 
GPIO_Write(GPIOA,~0X0001);

不支持2进制,只能转换成16进制来写。0X0001对应PA0。低电平点亮,所以前面加一个按位取反的符号。依次【点燃+延时】就可以达到流水灯的效果。

【蜂鸣器】

和前面几个一样,只是控制端口不同而已

 

 好吵

    

posted @ 2023-04-08 20:02  整点薯条拯救一切  阅读(178)  评论(0)    收藏  举报