就是想做个定时中断 用小灯的灭亮显示

2019-07-21 02:07发布

#include "stm32f10x_lib.h" void RCC_Configuration(void)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY)==RESET); FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//预取指缓存使能
FLASH_SetLatency(FLASH_Latency_2);  //设置代码延时值 延迟周期为2
RCC_HCLKConfig(RCC_SYSCLK_Div1);   //AHB时钟 = 系统时钟
RCC_PCLK2Config(RCC_HCLK_Div1);    //APB2时钟 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2);    //APB1时钟 = HCLK
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);  //PLL输入时钟 x 9
RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource()!=0x08);    //PLL为信号源
} void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 #ifdef VECT_TAB_RAM
   NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
 #else
    NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
} void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //设置为复挽推出
GPIO_Init(GPIOC,&GPIO_InitStructure);
} void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef        TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); TIM_DeInit(TIM2); //将外设TIM2寄存器重设为缺省值
TIM_InternalClockConfig(TIM2); //设置TIMx内部时钟 TIM_TimeBaseStructure.TIM_Period = 2000;
TIM_TimeBaseStructure.TIM_Prescaler = 35999; //时钟分频36000
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;  //设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);
   
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Timing;//输出比较模式
TIM_OC1Init(TIM2,&TIM_OCInitStructure);
TIM_Cmd(TIM2,ENABLE); TIM_PrescalerConfig(TIM2,35999,TIM_PSCReloadMode_Immediate); TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除中断标志
TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE ); //使能定时器中断
//TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update);
}
 int main(void)
{
#ifdef DEBUG
 debug();
 #endif  RCC_Configuration();  //使能外设时钟
 NVIC_Configuration(); //中断设置
 GPIO_Configuration(); //管脚使能
 TIM_Configuration();   while(1)
  {
  ;
  }
       
}  


求帮助修改   我用的是STM32F107  不过只要改出来就好
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 08:03
参考我们的例程即可。
济世良驹
2楼-- · 2019-07-21 13:38
先设置定时器中断,在中断服务函数里实现LED亮灭,乍一看楼上的程序很复杂
1329289273
3楼-- · 2019-07-21 15:06
 精彩回答 2  元偷偷看……
雪山飞狐
4楼-- · 2019-07-21 20:46
呵呵,去站内找
正点原子
5楼-- · 2019-07-22 02:35
 精彩回答 2  元偷偷看……

一周热门 更多>