STM8定时器更新事件与中断有什么不同

STM8定时器更新事件与中断有什么不同,第1张

1、中断产生以后要把中断标志位清掉,这样才能保证执行中断里的程序的时候不会被新的中断打断,从而可以让中断服务程序全部执行完。

2、中断服务程序程序执行完以后,要把中断打开(即把标志位置位),以便下一次还能触发该中断。这就是更新中断

外部中断是CPU的INT脚电平变化引发的中断,定时器中断是定时器达到计数值引发的中断。

定时器中断适合需要定时引发的事件,外部中断适合外部随机发生,需要快速处理的事件。

两个中断是完全不同的硬件引发的,所以不能拿要不要重载初值来比较。

外部中断是外部随机引发的自然是没有什么初值可言的

不能判断电平,会产生误导;如上升沿,下降沿边触发,是瞬态产生,可能在没有来得及判断时,中断就已经进行了;

举个例子,在PC口有的PC0和PC1两个信号都要求能够中断。而STM8S 对应PC口只有一个 中断向量,我要怎么才能够知道具体是有PC0引起的中断呢?还是PC1引起的中断呢?

我也看了坛子里面的一些相关的帖子,大致有这么一种方法,进入中断后读取IO口的电平状态 以判断是哪个IO口引起的中断。 但是我有个疑问,假定设置为下降沿触发中断。PC0先出现下降沿,系统进入中断,如果在这个时间段,PC1也出现下降沿,在中断里面再读PC0和PC1电平状态,仍然不能够判别是由PC0引起的中断,还是由PC1触发的中断啊!!

不建议这样用 最好一个PC,一个PD,每个口只开放一个中断;

那这样,一个PORT, 每个独立的中断口就没有意义了?

STM8S有5组IO端口,每组端口分别有若干引脚可以作为外部中断触发输入,分别为:

端口A: PA[6:2];端口B: PB[7:0];端口C: PC[7:0];端口D: PD[6:0];端口E: PE[7:0]。

//此例程是通过TIM2 CH1(PD4脚)通道来输出一个频率2K 占空比可调的方波,占空比可通过PD7脚的按键调

#include "STM8S105Kh"

typedef unsigned char u8;

typedef unsigned int u16;

u16 value;

void SystemInit(void)

{

CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M

CLK_PCKENR1 |= 0x60; //使能TIM2与TIM3与主频连接

PD_CR2 |= 0x80; //使能PD7口外部中断

}

void GPIO_init(void)

{

PD_DDR = 0x1F; //配置PD端口的方向寄存器全输出

PD_CR1 = 0x1F; //设置PD为推挽输出

}

void TIM2_init(void) //TIM2 CH1 工作于模式1

{

TIM2_CCMR1= 0x60; // PWM 模式 1,TIM2 CH1

TIM2_CCER1= 0x03; // CC1配置为输出

TIM2_ARRH = 0x07; // 配置PWM分辨率为10位,ARR=0x07D0

TIM2_ARRL = 0xD0; // PWM频率=8M/0x07D0=2000Hz

TIM2_CR1 |= 0x01; // 计数器使能,开始计数

}

void init_devices(void)

{

asm("sim");

SystemInit();

GPIO_init();

TIM2_init();

_asm("rim"); //开总中断

}

void main( void )

{

init_devices();

while(1)

TIM2_CCR1=value;//改变value值可改变频率

}

/

函数名 : @near @interrupt void TLI_IRQHandler (void)

功能描述: 中断服务程序

按下PD7口按键来改变占空比

/

@near @interrupt void TLI_IRQHandler (void)

{

PD_CR2 &= 0x7F; //关PD7外部中断

value+=50;

while(value>1000)

value=0;

PD_CR2 |= 0x80; //使能PD7口外部中断

return;

以上就是关于STM8定时器更新事件与中断有什么不同全部的内容,包括:STM8定时器更新事件与中断有什么不同、STM8外部中断:如何区分同一PORT中的不同脚,如PD1和PD2、STM8S单片机为什么外部按键中断跟AWU一起使用,外部按键按着按着就会复位掉,谁知道这是怎么回事呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9300231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存