OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9095|回复: 3

定时器1 频率是不是不同

[复制链接]

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
发表于 2013-8-19 21:24:47 | 显示全部楼层 |阅读模式


           Mini开发板定时器1的时钟频率是APB2,而APB2的时钟不是72M吗。下面程序是我的配置,把参数改为Tim2或者Tim3后LED每0.5S闪烁一次。但是下面的程序是Tim1,LEd的闪烁时间大概是3S闪烁一次,不是应该也是0.5S闪烁一次吗?(注:程序可以正常运行,但是LED的闪烁时间不对)

int main(void)
{

 SystemInit();
 uart_init(9600);
 delay_init(72); 
 NVIC_Configuration();
 LED_Init();
 TIM1_Init(4999, 7199);


 while (1);
}


 

 

void TIM1_Init(u16 arr, u16 psc)
{
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
// NVIC_InitTypeDef         NVIC_InitStructure;
 /*使能TIM2时钟*/
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);            //选择组1
// NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;            //TIM2中断
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;         //从优先级3级
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ通道被使能
// NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
 MY_NVIC_Init(0, 3,  TIM1_UP_IRQn);
 
 /*自动重装载值5000*/
 TIM_TimeBaseStructure.TIM_Period = arr;
 /*预分频值,+1为分频系数*/
 TIM_TimeBaseStructure.TIM_Prescaler =psc; 
// TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
 /*TIM向上计数模式*/
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 /*根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位*/ 
 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
 /*使能TIM2中断源*/
 TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
 /*使能TIMx外设*/
 TIM_Cmd(TIM1, ENABLE);          
}

void TIM1_UP_IRQHandler(void)  //注意定时器1中断入口函数名
{
 if ( TIM_GetITStatus(TIM1 , TIM_IT_Update) != RESET ) //是否发生中断
 {
  TIM_ClearITPendingBit(TIM1, TIM_FLAG_Update);    //清除中断待处理位
  LED0 = !LED0; //用于测试
 }   
}

Tim.zip

10.62 MB, 下载次数: 25

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-19 23:47:09 | 显示全部楼层
其他设置都一样么?
可以软件仿真,对比下设置为2,3,和1的寄存器值的区别。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
 楼主| 发表于 2013-8-20 00:47:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
额,原子哥,仿真也是0.5SLED翻转一次跟理论值一样,但是实际测试的时候为什么会LED大概过3S才闪烁一次呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-20 10:10:22 | 显示全部楼层
不解,你上传代码我测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-14 22:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表