我想让定时器tim2实现1s一次中断 但是不知道为什么代码下载到板子上发现非常快 检查了时钟tim2的时钟频率是72M 那么预分频系数设定为36000 重装载为2000 但是不管用
代码如下:
#include "stm32f10x.h"
void ttttt(void);
void GPIO_Configuration(void);
void delay(u32 t);
int i=0;
int main()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD,ENABLE);//GPIO时钟开启,A0控制B1按键,PD控制锁存器,PC控制数码管
GPIO_Configuration();
RCC->APB1ENR=(RCC->APB1ENR&0xfffffffe)|0x1;
GPIOC->BSRR=0xff00;//关闭所有led
GPIO_SetBits(GPIOD,GPIO_Pin_2);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
NVIC->ISER[0]=0x10000000;
TIM2->DIER=0x41;//使能timer中断
TIM2->PSC=0x8ca0;//36000分频
TIM2->ARR=0x7d0;//到2000
TIM2->CR1=0x15;
while(1)
{
;
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体名称为GPIO_InitStructure
//LED
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11
|GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//NLE
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
void delay(u32 t)
{
for(;t>0;t--);
}
void TIM2_IRQHandler(void)
{
GPIO_Write(GPIOC,~(1<<(i+8)));
GPIO_SetBits(GPIOD,GPIO_Pin_2);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
// delay(500000);
i++ ;
if(i==8)
{
i=0;
}
}
Clock Enabled, TIM2CLK: 72.00 MHz 这句话是不是就是说tim2的时钟频率是72mhz啊??
请大家帮忙看看
我后来改成tim3 也不行啊 为什么啊???
[
本帖最后由 cyhssw12 于 2011-7-29 12:00 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>