为什么stm8s103f3p6 定时器不进入中断

请问一下,我使用定时器4,怎么老是进不了中断呢?而通过查询溢出标志的方式应用timer4是可行的,说明定时器已经启动了,可是中断还要在哪里设置呢?谢谢!我用的编译环境是:... 请问一下,我使用定时器4,怎么老是进不了中断呢?而通过查询溢出标志的方式应用timer4是可行的,说明定时器已经启动了,可是中断还要在哪里设置呢?谢谢!我用的编译环境是:IAR FOR STM8 v1.3。#include#include "intrinsics.h"/********定时器4初始化**********/void Tim4_Init(void){ CLK_PCKENR1 |=0x10;//默认开启时钟 TIM4_PSCR =0x05; // 分频 TIM4_EGR |= 0x01; // TIM4_ARR = 0xfa; //重装载值 TIM4_IER_UIE = 1; //更新中断使能 TIM4_CR1_ARPE = 1; //预装载使能 TIM4_CR1_CEN = 1; //启动计数器 __enable_interrupt();//使能总中断}/********定时器4中断程序**********/#pragma vector = TIM4_OVR_UIF_vector __interrupt void TIM4_UIF_HANDLER(void) { static unsigned int i; i++; if(i == 100) { i = 0; PA_ODR_ODR3 = ~PA_ODR_ODR3; } TIM4_SR_UIF = 0; } 展开
 我来答
匿名用户
2013-12-02
展开全部
原因找到了。不是定时器设置的问题。而是程序中有这两条蓝色标记的语句: PC_DDR |= 0XE0;//将PC.7,,6,5 设为输出 //pc2,pc1看起来设置为了输入,但其实该芯片没有这两个引脚 PC_CR1 |= 0XE0;// 推挽输出 PC_CR2 &= ~0XE0;// MAX SPEED 2MHZ //PC_CR2 |=~0XE0;// 错误的语句,看作是误操作了PC2,PC1引脚,使中断不能进入。暂时看起来,这个程序不进入中断,可能是因为将PC_DDR的bit2,bit1位设置为0(复位值也是0),并且又将PC_CR2的bit2,bit1位设置为1(复位值是0),可是STM8S103F3P6又没有对应的PC2,PC1引脚,于是程序出错,从而不能进入定时中断,也不执行其它语句。不过如果不用中断,其它语句是可以正常执行的,定时器的溢出标志也可以软件查询到。
匿名用户
2013-12-02
展开全部
#pragma vector = TIM4_OVR_UIF_vector 这个应该就是吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-02
展开全部
有没安装中断入口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式