基于STM32F106的八位流水灯程序
时间: 2023-03-21 17:02:02 浏览: 162
以下是基于STM32F106的八位流水灯程序:
```
#include "stm32f10x.h"
int main(void)
{
// 打开GPIOC时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
// 配置GPIOC 0-7引脚为输出模式
GPIOC->CRH &= ~GPIO_CRH_MODE;
GPIOC->CRH |= GPIO_CRH_MODE_0 | GPIO_CRH_MODE_1 | GPIO_CRH_MODE_2 | GPIO_CRH_MODE_3 | GPIO_CRH_MODE_4 | GPIO_CRH_MODE_5 | GPIO_CRH_MODE_6 | GPIO_CRH_MODE_7;
while(1)
{
// 点亮第一个LED
GPIOC->BSRR = GPIO_BSRR_BR0;
GPIOC->BSRR = GPIO_BSRR_BS7;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第二个LED
GPIOC->BSRR = GPIO_BSRR_BR1;
GPIOC->BSRR = GPIO_BSRR_BS0;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第三个LED
GPIOC->BSRR = GPIO_BSRR_BR2;
GPIOC->BSRR = GPIO_BSRR_BS1;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第四个LED
GPIOC->BSRR = GPIO_BSRR_BR3;
GPIOC->BSRR = GPIO_BSRR_BS2;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第五个LED
GPIOC->BSRR = GPIO_BSRR_BR4;
GPIOC->BSRR = GPIO_BSRR_BS3;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第六个LED
GPIOC->BSRR = GPIO_BSRR_BR5;
GPIOC->BSRR = GPIO_BSRR_BS4;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第七个LED
GPIOC->BSRR = GPIO_BSRR_BR6;
GPIOC->BSRR = GPIO_BSRR_BS5;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
// 点亮第八个LED
GPIOC->BSRR = GPIO_BSRR_BR7;
GPIOC->BSRR = GPIO_BSRR_BS6;
// 等待一段时间
for(int i = 0; i < 1000000; i++);
}
}
```
该程序使用了STM32F106的GPIOC端口控制八个LED灯的亮灭。程序采用了流水灯的方式,每次点亮一个LED灯,然后等待一段时间后再点亮下一个LED灯,循环往复。
阅读全文