STM32定时器控制led灯亮灭

SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器
是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置
系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产
生一次中断,以此循环往复。
在使用时,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
接下来,利用 SysTick 产生 1s 的时基,LED 以 1s 的频率闪烁。
1、设置重装载寄存器的值
2、清除当前数值寄存器的值
3、配置控制与状态寄存器

配置头文件:

  void PendSV_Handler(void)
    {
    }
      uint32_t g_timer_count;
    /**
      * @brief  This function handles SysTick Handler.
      * @param  None
      * @retval None
      */
    void SysTick_Handler(void)
    {
    	if(g_timer_count>0){
    	  g_timer_count--;
    	}
    		
    		
    }

定时器模块:

void init_timer()
{
     
SysTick_Config(SystemCoreClock/100000);


}
void delay_us(uint32_t time)
{
   g_timer_count=time;
  while(g_timer_count!=0){}  

}

LED模块:

void LED_GPIO_Config()
{
	    GPIO_InitTypeDef GPIO_InitStructure;
	

	    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);


	    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;


	    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;


	    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
      GPIO_Init(GPIOA,&GPIO_InitStructure);


	    GPIO_ResetBits(GPIOA, GPIO_Pin_8);
	
   		// while(1)
		
      //return 0;
 }

主函数:

int main(void)

    {
    
       LED_GPIO_Config();
        init_timer();
    	while(1){
    	    GPIO_ResetBits(GPIOA,GPIO_Pin_8);
    		  delay_us(1000*100);
         	GPIO_SetBits(GPIOA,GPIO_Pin_8);
    		  delay_us(1000*100);
    	}

你可能感兴趣的:(STM32定时器控制led灯亮灭)