OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3788|回复: 1

求助大神们,帮助看一下定时器中断的代码

[复制链接]

3

主题

3

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-10-19
在线时间
4 小时
发表于 2021-1-8 16:20:44 | 显示全部楼层 |阅读模式
TIM_HandleTypeDef  TIM3_Handler;
void TIME3_Init(void)
{
        TIM3_Handler.Instance=TIM3;
        TIM3_Handler.Init.Prescaler =84-1;
        TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;
        TIM3_Handler.Init.Period=100-1;
        HAL_TIM_Base_Init(&TIM3_Handler);
        HAL_TIM_Base_Start_IT(&TIM3_Handler);//ê1Äü¶¨ê±Æ÷3
}
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
       
        __HAL_RCC_TIM3_CLK_ENABLE();          //ê±Öóê1Äü
        HAL_NVIC_EnableIRQ(TIM3_IRQn);                                //ê1TIM3ÖD¶Ïí¨μà
        HAL_NVIC_SetPriority(TIM3_IRQn,1,3);                        //ÇàÕ¼óÅÏ輶3£¬×óóÅÏ輶3
}
void TIM3_IRQHandler(void)
{
        HAL_TIM_IRQHandler(&TIM3_Handler);
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
        I2C_Read_NByte(0xC0, 0x28,(uint8_t*)p11, 4);
        I2C_Read_NByte(0xC0, 0x29,(uint8_t*)q11, 4);
        x11|=p11[1];
        x11<<=4;
        y11 = q11[2];
        y11>>=4;
        x11|=y11;
        if((x11&0x0800)==0x0800)
        {
                x = x11;
                x11|=0xF000;
        }
        x11 = x11/4;
}
这是我写的定时器中断的程序,其中中断服务函数里面是我用来读取霍尔传感器的寄存器的函数,以及处理部分,但不知道为什么从相应的输出管脚观察示波器,示波器上并没有输出波形,所以推断可能是没有进入中断服务,我在主函数里面也相应的初始化定时器了。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2021-1-9 19:45:57 | 显示全部楼层
设置完TIM3优先级,再使能中断试试。
另外,设置自动重装载TIM_AUTORELOAD_PRELOAD_ENABLE试一下。
查你的IIC硬件部分电路是否正常有没有虚焊的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 06:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表