⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blinky.c

📁 stm32初级例程
💻 C
字号:

/**************************************************************
**  精英STM32开发板
**  版本:V1.0
**  功能:按下按键,对应的LED点亮 
***************************************************************/

#include <stdio.h>
#include <stm32f10x_lib.h>                        // STM32F10x Library Definitions
#include "STM32_Init.h"                           // STM32 Initialization

#define u16  unsigned short
#define u32  unsigned long

u32 volatile gTimer_1ms=0;

/*------------------------------------------------------------------------------
  Systick 中断函数
  SysTick 1 ms中断1次
 *------------------------------------------------------------------------------*/
void SysTick_Handler (void) 
{
    gTimer_1ms++;
} // end SysTick_Handler

//LED循环闪烁
void LedFlash(void)
{
  static u16 leds = 0x01;
  u32 temp;
    
    //先读出PC端口状态
    temp = GPIOC->ODR;
    
    //先屏蔽掉PC0~PC2
    temp |= 0x00000007;
    
    //重新设置PC0~PC2输出状态,IO输出低电平点亮LED
    GPIOC->ODR = temp&(~(leds));
    leds <<= 1;
    if ( (leds&0x0f) == 0)
	     leds = 0x01;
}

//精确的延时
void Delay(u32 nTime)
{u32 counter;
  
  counter=gTimer_1ms;
  while( gTimer_1ms-counter < nTime);//定时时间到才退出
  
}
/*----------------------------------------------------------------------------
  MAIN function
 *----------------------------------------------------------------------------*/
int main (void) 
{
  stm32_Init ();// STM32 初始化
  
  //关闭所有LED
  GPIOC->ODR |= 0x00000007;
  Delay(20);
  
  while (1) 
  {              
     Delay(50);
	   
	   //循环显示1位LED
	   LedFlash();
	   
	   Delay(50);
	   
	   //关闭所有LED
	   GPIOC->ODR |= 0x00000007; 
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -