打印
[STM32F1]

STM32F103流水灯的实现(库函数版)

[复制链接]
605|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
abotomson|  楼主 | 2023-5-29 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#define PCL GPIOC->BRR //使PC输出低电平
#define PCH GPIOC->BSRR //使PC输出高电平
void delayms(unsigned int ms);//延时函数
void led(uint8_t a,uint8_t b);//LED显示程序a表示第几个,b表示灭0或亮1

int main(void)
{
uint8_t n;
GPIO_InitTypeDef  GPIO_InitStructure;

    /* 使能LED对应GPIO的Clock时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  //使能LED1灯对应的GPIOC管脚时钟

    /* 初始化LED的GPIO管脚,配置为推挽输出 */  //设置端口
    GPIO_InitStructure.GPIO_Pin = 0xFFFF;//GPIO_Pin_2|GPIO_Pin_3 ;   //LED灯对应的GPIO_Pin_2和3端口
//设置对端口的模式
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置为 推挽(Push-Pull)输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//输出速率选择50MHZ(2,10,50三种速率)
    GPIO_Init(GPIOC, &GPIO_InitStructure);//调用GPIO初始化函数
    while (1)

{
for(n=0;n<8;n++)
{
led(n,1);//第几个亮
delayms(500);//延时
}
}   
}

void delayms(unsigned int ms)//延时函数
{
unsigned char a,b;
while(ms--)
        for(b=254;b>0;b--)
            for(a=13;a>0;a--);
}
void led(uint8_t a,uint8_t b)//LED显示程序
{
PCL=0xffff;
if(b){PCH=1<<a;}
else {PCL=1<<a;}
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

1619

帖子

1

粉丝