关于stm32f429定时器的设置
根据手册,定时器7的时钟是45Mhz,我是根据官方的时钟初始化来初始化时钟的,我看了一下,是设置的45MHz,我设置的定时器7的设置如下:TIM7->PSC = (450 - 1); //
TIM7->ARR = 100;
TIM7->CR1 |= (1 << 7); //
TIM7->DIER |= (1 << 0); //使能中断
TIM7->SR &= ~(1 << 0); //清楚中断标志位
TIM7->CR1 |= (1 << 0); //开始计数
我设置的预分频是450,计数是100,根据计算,应该是1ms,可是我用USBee查看,发现时间是1.58多ms......我测试的方法是:
void TIM7_IRQHandler(void)
{
if(TIM7->SR)
{
TIM7->SR = 0X0000;
//++Test_GV;
if(LED_RED_EXT)
{
LED_RED_RESET;
}
else
{
LED_RED_SET;
}
}
}
现在不知道是不是我计算错误,还是我理解错误,差距咋这么大呢....求解释啊.............. 设置的什么中断方式? admin 发表于 2014-6-24 20:01
设置的什么中断方式?
什么意思...这句话不太理解,可以解释一下么.....{:3_41:} MrYan 发表于 2014-6-24 20:03
什么意思...这句话不太理解,可以解释一下么.....
TIM7->SR你不是设置了么,这个知道是设置什么吗? admin 发表于 2014-6-24 20:05
TIM7->SR你不是设置了么,这个知道是设置什么吗?
也就是中断是update Interrupt sourc、Capture Compare TIM Trigger Interrupt source、 Interrupt source、TIM Break Interrupt source等,看你设置的是update Interrupt 中断,你计数器初始值装的多少? admin 发表于 2014-6-24 20:08
也就是中断是update Interrupt sourc、Capture Compare TIM Trigger Interrupt source、 Interrupt sourc ...
呃......我看资料的时候,定时器7只有Update DMA request enable和Update interrupt enable,我把前者和谐掉....不就只有后者了么...至于说中断源,我看了一下...没有地方可以设置啊,难道是URS和UDIS设置的么........ MrYan 发表于 2014-6-24 20:15
呃......我看资料的时候,定时器7只有Update DMA request enable和Update interrupt enable,我把前者和 ...
TIM7->ARR = 99;你试试这样设置 admin 发表于 2014-6-24 20:28
TIM7->ARR = 99;你试试这样设置
这个我已经试过了....我看了一下中断源,定时器7有三个:计数溢出,设置UG位,还有就是控制器(DMA);第2个是设置UG的时候,就会产生中断,第三个我中断禁止了......应该只有第一个是中断了...... MrYan 发表于 2014-6-24 20:33
这个我已经试过了....我看了一下中断源,定时器7有三个:计数溢出,设置UG位,还有就是控制器(DMA);第 ...
那中断嵌套是否设置正确? admin 发表于 2014-6-24 20:35
那中断嵌套是否设置正确?
中断嵌套???不是只有中断优先级么...这个到没怎么注意,这个怎么说的............. admin 发表于 2014-6-24 20:35
那中断嵌套是否设置正确?
我百度了一下,中断嵌套就是中断的两个方式,抢占式优先级和响应优先级,这两个我都设置了....我没有把这个列出而已,我把整个设置列出来吧!!!
void InitTimeSeven(void)
{
NVIC_InitTypeDef NVIC_Init_IT; //Use set time seven Priority
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE); //Open time seven periph clock
NVIC_Init_IT.NVIC_IRQChannel = TIM7_IRQn; //Time seven
NVIC_Init_IT.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init_IT.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_Init_IT.NVIC_IRQChannelSubPriority = 3;
NVIC_Init(&NVIC_Init_IT);
TIM7->PSC = (450 - 1); //
TIM7->ARR = 99;
TIM7->CR1 |= (1 << 7) | (1 << 2); //
TIM7->DIER |= (1 << 0); //使能中断
TIM7->SR &= ~(1 << 0); //清楚中断标志位
TIM7->CR1 |= (1 << 0); //开始计数
} MrYan 发表于 2014-6-24 20:56
我百度了一下,中断嵌套就是中断的两个方式,抢占式优先级和响应优先级,这两个我都设置了....我没有把 ...
那应该没有问题哦,TIM7->SR &= ~(1 << 0)最好放到中断里清除 admin 发表于 2014-6-24 21:11
那应该没有问题哦,TIM7->SR &= ~(1
这就蛋疼了..........难道工具的问题???可是连us级都可以检测的非常清楚啊.....郁闷啊....
页:
[1]