打印
[STM8]

STM8L TIM3溢出中断的问题

[复制链接]
445|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanwe|  楼主 | 2019-12-13 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8, TI, pc, ck, ni

void TIM2_Init(void)//通用定时器16位,用于PWM输出{    CLK_PCKENR1_PCKEN10=1;//开启定时器2外设时钟
  TIM2_ARRH=0x00;//设定重装载值  TIM2_ARRL=50;
  TIM2_CCER1=0x01;//高电平有效  TIM2_CCMR1=0x60;//PWM模式1
  TIM2_CCR1H=0;//占空比  TIM2_CCR1L=25;  TIM2_CR1|=0x01;//向上计数,无缓存,使能  TIM2_BKR=0x80;//开启总输出使能}
void TIM3_Init(void)//用于采样定时{CLK_PCKENR1_PCKEN11=1;//开启定时器3外设时钟 TIM3_CR1=0x80;TIM3_PSCR=0x00;//预分频器TIM3_SMCR=0x77;//外部计数模式1TIM3_ARRH = 0x00; //TIM3_ARRL = 50; // TIM3_IER = 0x01; // 允许更新中断TIM3_CR1 |= 0x01; // 计数器使能,开始计数}
void GPIO_Init(void){  PD_DDR=0x00;  PB_DDR=0xff;  PC_DDR=0x80;    PD_CR1=0x02;  PB_CR1=0xff;  PC_CR1=0xff;    PD_CR2|=0x02;  PC_CR2|=0x02;  EXTI_CR1=0x08;//开PC1外部电平中断}
#pragma vector = EXTI1_vector __interrupt void EXIT_PORTC_01(void)     //中断服务函数  {  //PC_ODR^=0x80;EXTI_SR1=0xff;}
#pragma vector = TIM3_OVR_UIF_vector     __interrupt void TIM3_OVR_CC(void)     //中断服务函数  {  PC_ODR^=0x80;TIM3_SR1=0xff;//清溢出中断标志}   int main(void)
{  CLK_ICKCR|=0x04;  CLK_SWR=0x02;  CLK_SWCR|=0x02;  CLK_CKDIVR=0x00;//使用内部LSI时钟,无分频   asm("sim");    GPIO_Init();    TIM2_Init();    TIM3_Init();    asm("rim");    //开总中断  while(1)  {  }}
使用的是STM8L152C6T6,PC7接了LED,程序如上,TIM2产生PWM从PB0输出,频率调节,占空比调节,一切正常。PB0连接到PD1(TIM3的外部时钟输入口),TIM3对PWM进行计数,溢出中断中对LED电平进行翻转,程序实际执行时,PWM频率780HZ,LED点亮,示波器测LED电压频率为390HZ,为啥是一半频率

使用特权

评论回复
沙发
lium| | 2019-12-13 22:58 | 只看该作者
更改PWM频率再测试

使用特权

评论回复
板凳
hanwe|  楼主 | 2019-12-13 23:01 | 只看该作者
更改PWM频率再测试LED电压频率还是是PWM的一半~~!那里的问题??

使用特权

评论回复
地板
wangpe| | 2019-12-13 23:04 | 只看该作者

你这程序好乱。。。

使用特权

评论回复
5
langgq| | 2019-12-13 23:06 | 只看该作者
在向上计数模式中,计数器从0计数到用户定义的比较值(TIMx_ARR寄存器的值),然后重新从0开始计数并产生一个计数器溢出事件,同时,如果TIM1_CR1寄存器的UDIS位是0,将会产生一个更新事件(UEV)。

使用特权

评论回复
6
wangzsa| | 2019-12-13 23:09 | 只看该作者
从 0—>TIMx_ARR寄存器的值 产生溢出事件从 0—>TIMx_ARR寄存器的值 产生溢出事件

使用特权

评论回复
7
pengf| | 2019-12-13 23:14 | 只看该作者

在向下模式中,计数器从自动装载的值(TIMx_ARR寄存器的值)开始向下计数到0,然后再从自动装载的值重新开始计数,并产生一个计数器向下溢出事件。如果TIM1_CR1寄存器的UDIS位被清除,还会产生一个更新事件(UEV)。
从 TIMx_ARR寄存器的值—>0 产生溢出事件

使用特权

评论回复
8
labasi| | 2020-1-8 16:21 | 只看该作者
寄存器的标志位有写

使用特权

评论回复
9
paotangsan| | 2020-1-8 16:22 | 只看该作者
看不太明白

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

979

主题

8749

帖子

4

粉丝