1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

定时中断

#include "stm32f10x.h"  static GPIO_InitTypeDef   GPIO_InitStructure;  static NVIC_InitTypeDef   NVIC_InitStructure;    static TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  #define  PB5OUT(n)   *(volatile uint32_t *)(0x42000000+((uint32_t)&GPIOB->ODR-0x40000000)*32+n*4)    void led0(void){      //led0-->PB5      //使能端口      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);      //初始化GPIO引脚      GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;      GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;      GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//高速响应      GPIO_Init(GPIOB, &GPIO_InitStructure);      GPIO_SetBits(GPIOB,GPIO_Pin_5);  }    void TIM2init(void){      //使能定时器2硬件时钟       RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);      //配置定时器2 分配值,计数值等     TIM_TimeBaseStructure.TIM_Period = 10000-1;//计数值     TIM_TimeBaseStructure.TIM_Prescaler = 7200-1;//预分频器7100-1+1,隐形着一个+1操作,所以要减一     TIM_TimeBaseStructure.TIM_ClockDivision = 0;//这个用不到     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);      //配置定时器2中断的触发方式       TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);      //配置定时器2的中断优先级     NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     NVIC_Init(&NVIC_InitStructure);      //使能定时器2      TIM_Cmd(TIM2, ENABLE);        }        void TIM2_IRQHandler(void){      if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)      {PB5OUT(5)^=1 ;      TIM_ClearITPendingBit(TIM2,TIM_IT_Update);      }        }         int main(){      led0();      TIM2init();        while(1){            }  }



微信扫码关注

更新实时通知

作者:xiao 分类:硬件笔记 浏览: