久芯网

stm8s003F3带编码器

avatar fangli 提问时间: 2023-07-12 11:10:05 / 未解决
//旋转编码器初始化
void Encoder_Init(void)
{
  //GPIO_DeInit(GPIOC);//恢复GPIOD口的寄存器默认值
  //GPIO_Init(GPIOC, GPIO_PIN_6 , GPIO_MODE_IN_FL_NO_IT);//上拉输入无中断功能
  //GPIO_Init(GPIOC, GPIO_PIN_7 , GPIO_MODE_IN_FL_NO_IT);//上拉输入无中断功能

//TIM1_DeInit();//恢复寄存器的默认值

//TIM1->CR1   &=0xFE; //CEN='0'失能计数器,关闭计数
CLK->PCKENR1 |=0x80; //开启TIM1时钟

//TIM1->SMCR  &=0xfc;
TIM1->SMCR  |=0x02; //SMS='011'编码器模式3,所有的输入均在上升沿和下降沿有效

TIM1->CCMR1 |=0x1; //CC1S='01'通道位输入CC1通道映射在TI1FP1上
TIM1->CCMR2 |=0x1; //CC2S='01'通道位输入CC2通道映射在TI2FP2上

//TIM1->CCER1 &=0**; //CC1P='0',CC2P='0'

//对ARR寄存器进行付初始值为最大值,因为在编码器模式下,计数器计数值的范围是0-ARR寄存器,如果不付初始值,哪ARR就为0,当旋转编码器时,计数值会从0变化到0,就看不到编码器的旋转过程了
TIM1->ARRH   =0xEA; //自动重装载高位
TIM1->ARRL   =0x60; //自动重装载地位TIM1中断溢出值:0X1F40=8000

TIM1->IER   |=0x1; //UIE='1'允许更新中断,开中断

TIM1->CNTRH = 0xea;//encodeNumber / 256;
TIM1->CNTRL =0x56; // encodeNumber % 256;  //TIM1_CNT起始计数值:4000

//TIM1_ITConfig(TIM1_IT_UPDATE,ENABLE);//中断配置为更新中断
//ITC_SetSoftwarePriority(ITC_IRQ_TIM1_OVF, ITC_PRIORITYLEVEL_0);//设置中断优先级

//ITC->ISPR5 = 0xDF;  //18AD中断优先级设置为1.10为0,01为1,00位2,11为3
//ITC->ISPR6 = 0xFF;  //23T1中断优先级设置为3,默认,优先级最高

TIM1->CR1   =0x01; //CEN='1'使能计数器,启动计数

//TIM1_Cmd(ENABLE);//启动定时器1
}


如需获得 stm8s003F3 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

7个回答
  • avatar fangli
    回答时间: 2023-07-12 11:33:42

    大家好!我今天试了一下8S的TIM1的编码器功能,发现无论怎么该,运行起来无法进入定时器TIM1的对应中断。#pragma vector=0xD__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void) {}

  • avatar fangli
    回答时间: 2023-07-12 11:52:11

    PC6和PC7口线没有问题我用示波器测过,波形很好,另外,我用外部中断方式也试过了,口线没毛病。

  • avatar butterflyspring
    回答时间: 2023-07-12 12:18:55

    可以调试检查一下中断使能位和计数器的值是否溢出并使得更新标志置位。

  • avatar fangli
    回答时间: 2023-07-12 12:40:20
    butterflyspring 发表于 2022-11-4 09:49
    可以调试检查一下中断使能位和计数器的值是否溢出并使得更新标志置位。 ...

    您好!我主程序中断允许开的,并且我将TIM1->IER =0XFF;定时器TIM1所有相关中断事件多打开了,还是无法进入相关中断。不用编码器模式,定时器中断正常开启。

  • avatar fangli
    回答时间: 2023-07-12 12:59:55

    我用外围电路一致的主控换成STM32F103,编码器功能试过了,没有问题。但是换成STM8S003就整不起来

  • avatar fangli
    回答时间: 2023-07-12 13:32:09

    大家好!这个问题已经解决了,搞了2天,最后翻了手册搞懂了。

  • avatar 网络孤客
    回答时间: 2023-07-12 13:57:58
    fangli 发表于 2022-11-4 17:04
    大家好!这个问题已经解决了,搞了2天,最后翻了手册搞懂了。

    能写上什么原因吗,为以后需要的兄弟提供经验。

会员中心 微信客服
客服
回到顶部