STM8L的TIM2捕获的问题 5

我写了个捕获触发程序。。。。检测到PC0的上升沿后PC7的灯一直高电平,,,,可现在一直进不了中断,,,,求解释#include<iostm8l152C6.h>#defi... 我写了个捕获触发程序。。。。检测到PC0的上升沿后PC7的灯一直高电平,,,,可现在一直进不了中断,,,,求解释
#include<iostm8l152C6.h>
#define uchar unsigned char
#define uint unsigned int
uint x,y,i;
void GPIO_Init()
{
PB_DDR|=0x01;//定义定时器2的通道1
PB_CR1=0x01;
PB_CR2=0x00;

PC_DDR|=0x01;
PC_CR1=0x01;
PC_CR2=0x00;

PE_DDR|=0x80;//定义了PC7那盏LED灯
PE_CR1|=0x80;
PE_CR2=0x00;
}
void TIM2_Init()
{
TIM1_CCER1 &=~0x11;//禁止输入捕获1,2(在开启比较模式前必须要先关闭比较使能才能配置寄存器,不然会出错)
TIM2_CCMR1=0x01;//CC2通道配置为输入,且无预分频,捕获输入口上检测到每一个边沿都触发一次捕获
TIM2_CCER1=0x01;//捕获发生在上升沿,且捕获使能
TIM2_IER|=0x42;//允许捕获比较器1中断
}
void CLK_Init()
{
CLK_CKDIVR = 0x01; //将16M的晶振改成内部8M的晶振
}
void delay()
{
uint i=600;
while(i--);
}
void GPIO_set()
{
PC_ODR_ODR0=0;
delay();
PC_ODR_ODR0=1;
delay();
PC_ODR_ODR0=0;
delay();
PC_ODR_ODR0=1;
delay();
PC_ODR_ODR0=0;
delay();
PC_ODR_ODR0=1;
delay();
}
void main()
{
CLK_Init();
GPIO_Init();
TIM2_Init();
asm("rim");
GPIO_set();
while(1)
{
if(i==1)
{
while(1)
{
PE_ODR_ODR7=1;
}
}
}
}
#pragma vector=TIM2_CAPCOM_CC1IF_vector
__interrupt void zhongduan()
{
i=1;
TIM2_SR1&=0x00; //清除捕获中断
}
展开
 我来答
布焮戎2W
2016-03-22
知道答主
回答量:3
采纳率:0%
帮助的人:3326
展开全部
你看你在初始化定时器时,开始是上升沿中断,如果你只使用CP2那么你在中断进去后再设置下降沿中断。否则只能检测到一种电平
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友48d5dc9
2012-12-08 · TA获得超过448个赞
知道小有建树答主
回答量:476
采纳率:0%
帮助的人:204万
展开全部
C不会哦
追问
这个是stm8L的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式