一、了解STM32的电路原理图,用Proteus设计流水灯实验
STM32原理图
Proteus仿真
原理图
仿真结果:
二、以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA、GPIOB、GPIOC这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
代码部分
代码设计首先需要配置几个口为输出,依次点亮几个灯,再在他们之间设计延时函数,再进行无限循环即可实现LED的流水灯的点亮。
代码:
#include “stm32f10x.h”
int main(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;// 使能GPIOC的时钟
GPIOC->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0 |
GPIO_CRL_MODE1 | GPIO_CRL_CNF1 |
GPIO_CRL_MODE2 | GPIO_CRL_CNF2 |
GPIO_CRL_MODE3 | GPIO_CRL_CNF3);
GPIOC->CRL |= GPIO_CRL_MODE0 | GPIO_CRL_MODE1 |
GPIO_CRL_MODE2 | GPIO_CRL_MODE3;// 配置PC0、PC1、PC2、PC3为推挽输出
while(1)
{
GPIOC->BSRR = GPIO_BSRR_BS0; // 点亮LED1
for(int i = 0; i < 100000; i++); // 延时一段时间
GPIOC->BSRR = GPIO_BSRR_BS1; // 点亮LED2
for(int i = 0; i < 100000; i++); // 延时一段时间
GPIOC->BSRR = GPIO_BSRR_BS2; // 点亮LED3
for(int i = 0; i < 100000; i++);// 延时一段时间
}
}
线路连接:
实践结果