stm32 c需语言编程实例,STM32 ARM C语言编程之流水灯

#include "stm32f10x.h"//头文件包含 将stm32的函数库stm32f10x.h包进来

#define RCC_GPIO_LED RCC_APB2Periph_GPIOF//宏定义 LED使用的GPIO时钟

#define LEDn 4//宏定义 LED数量

#define GPIO_LED GPIOF//宏定义 LED灯所使用的gpio组

#define DS1_PIN GPIO_Pin_6//宏定义 LED1所使用的gpio管脚

#define DS2_PIN GPIO_Pin_7//宏定义 LED2所使用的gpio管脚

#define DS3_PIN GPIO_Pin_8//宏定义 LED3所使用的gpio管脚

#define DS4_PIN GPIO_Pin_9//宏定义 LED4所使用的gpio管脚

GPIO_InitTypeDef GPIO_InitStructure;//gpio口初始化结构体

ErrorStatus HSEStartUpStatus;// (等待时钟的稳定?)(使强制执行c规则)

u8 count=0;//定义8位无符号数据变量

void RCC_Configuration(void);//初始化stm32系统时钟

void NVIC_Configuration(void);//定义中断管理初始化函数

void Delay(vu32 nCount);//声明延时函数

void Turn_On_LED(u8 LED_NUM);//LED控制函数

int main(void)

{

//配置GPIO口管脚模式

RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);//使能LED灯所使用的时钟

GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;//设定LED所使用的管脚,使之有效

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设GPIO口的输出模式为推免模式

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置GPIO口的输出时钟为50MHz

GPIO_Init(GPIO_LED, &GPIO_InitStructure); //初始化LED灯所使用的管脚

GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯

while(1)

{

GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯

Turn_On_LED(count%4);//点亮一个LED灯

count++;

Delay(0x2FFFFF);

}

}

void Turn_On_LED(u8 LED_NUM)

{

switch(LED_NUM)

{

case 0:

GPIO_ResetBits(GPIO_LED,DS1_PIN); //点亮DS1灯

break;

case 1:

GPIO_ResetBits(GPIO_LED,DS2_PIN); //点亮DS2灯

break;

case 2:

GPIO_ResetBits(GPIO_LED,DS3_PIN); //点亮DS3灯

break;

case 3:

GPIO_ResetBits(GPIO_LED,DS4_PIN); //点亮DS4灯

break;

default:

GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN); //点亮所有的灯

break;

}

}

void Delay(vu32 nCount)

{

while(nCount--);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值