OpenEdv-开源电子网

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

stm32f103 TIM3 中断的问题

[复制链接]

24

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2013-3-11
在线时间
22 小时
发表于 2013-4-26 20:47:54 | 显示全部楼层 |阅读模式
stm32 TIM3 工作于PWM1,向上计数,我想在匹配中断函数里更改CCR1的值,然后再软件设置UG位产生更新, 此时计数器清零了 ,但是发现再次进入中断时CNT的值还是原来的CCR1,是不是软件置位UG产生的更新不能将CCR1的值转到影子寄存器中啊,请教了,谢谢
void   TM3_PWM_Config(void)
{
TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
TIM_OCInitTypeDef          TIM_OCInitStructure;  
//基本的初始化
TIM_TimeBaseStructure.TIM_Prescaler=0;  //PSC预分频 不分频72MHZ
TIM_TimeBaseStructure.TIM_Period=200;  //自动重载寄存器  
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;  //向上计数模式
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1 ; //不分频 见TIMx_CR1寄存器位9 位8

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1 ;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=50;  //设定比较值
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; 
TIM_OC1Init(TIM3,&TIM_OCInitStructure);  //初始化了通道1
         TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); 

TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);  //使能匹配中断

//使能TM3重载寄存器ARR
TIM_ARRPreloadConfig(TIM3,ENABLE);
//使能TM3
TIM_Cmd(TIM3,ENABLE);
}


/****
TIM3 CCR1匹配中断
****/
void  TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)
{
TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);  //软件清0
CCR1_Val+=20;
TIM_SetCompare1(TIM3,CCR1_Val);
TIM_GenerateEvent(TIM3,TIM_EventSource_Update); 
if(CCR1_Val==180)
CCR1_Val=50;
}
}


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

24

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2013-3-11
在线时间
22 小时
 楼主| 发表于 2013-4-26 21:26:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
您好,我可能钻牛角尖了,如果去掉CCR1的预装载功能,就可以直接写进影子寄存器了,但我是想利用这个函数TIM_GenerateEvent(TIM3,TIM_EventSource_Update); 产生更新,就算使能了预装载功能,也应该可以更新CCR1的影子寄存器啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-26 21:33:25 | 显示全部楼层
回复【3楼】lhwaizhu:
---------------------------------
这我就不清楚了,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 22:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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