STM32跑马灯实验库函数(学习小结)

STM32跑马灯实验库函数:
关于跑马灯实验究其原理就是控制IO口输出高低。
通过观察原理图我们可以知道,两个LED都是连接上拉电阻,所以要想LED点亮,我们就需要使二极管的另外一端为0,所以二极管才能导通,才会发光。
在这里插入图片描述
控制这两个的IO口处的高低电平就行
那么我们就需要推挽输出
(什么是推挽输出呢?
推挽输出:可以输出高,低电平,连接数字器件)
有了推挽输出,就可以更方便的控制电平的高低
如何去进行库函数的配置呢?
1、首先我们使能IO口时钟,那么我们可以调用RCC_APB2PeriphClockCmd()函数(当然不同的IO口调用的时钟使能函数也可能不同)
2、其次我们需要开始初始化IO口的模式,那么我们就需要调用GPIO_Init()函数了,值得一提的是这个函数需要设置一个指针,然后又关于这个指针的一系列的操作,就可以把模式设置好了
3、最后操作IO口,输出高低电平就行
GPIO_SetBits()这是输出高电平
GPIO_ResetBits()这就是输出低电平

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于STM32F103ZET6芯片的函数实现LED马灯的示例代码: ```c #include "stm32f10x.h" void Delay(__IO uint32_t nCount); int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); while(1) { GPIO_SetBits(GPIOB, GPIO_Pin_12); Delay(0x3FFFFF); GPIO_ResetBits(GPIOB, GPIO_Pin_12); GPIO_SetBits(GPIOB, GPIO_Pin_13); Delay(0x3FFFFF); GPIO_ResetBits(GPIOB, GPIO_Pin_13); GPIO_SetBits(GPIOB, GPIO_Pin_14); Delay(0x3FFFFF); GPIO_ResetBits(GPIOB, GPIO_Pin_14); GPIO_SetBits(GPIOB, GPIO_Pin_15); Delay(0x3FFFFF); GPIO_ResetBits(GPIOB, GPIO_Pin_15); } } void Delay(__IO uint32_t nCount) { for(; nCount != 0; nCount--); } ``` 该示例代码中,我们使用了STM32F103ZET6芯片的四个GPIO口(PB12、PB13、PB14和PB15)来控制四个LED灯的亮灭,通过轮流点亮不同的LED灯来实现LED灯的马灯效果。在主函数中,我们首先对四个GPIO口进行了初始化,然后通过使用函数GPIO_SetBits和GPIO_ResetBits来控制GPIO口的亮灭,最后通过Delay函数来产生一定的延时。 需要注意的是,该示例代码中的延时函数Delay并不是一个很准确的延时函数,因为它只是通过循环来实现延时,而循环的执行时间会受到很多因素的影响,如CPU的主频、编译器的优化等。因此,在实际的应用中,我们需要使用更加准确的延时函数,如定时器中断等方式来实现延时。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值