找回密码
 立即注册
楼主: zhrxxhuy

利用普中A2开发板学习AI8051U的心得

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-05-07 01:15:26
已绑定手机

6

主题

21

回帖

124

积分

注册会员

积分
124
发表于 4 天前 | 显示全部楼层
第二十二期(第22集《比较器》)

比较器清除中断标志位函数为
  1. CMP_ClearFlag();                //清除比较器中断标志
复制代码


但从函数定义来看CMP_ClearFlag()是将CMPCR1的BIT6置位,而非清除。
  1. #define CMPCR1_CMPIF_MSK                BIT6
  2. #define CMP_CheckFlag()                 READ_REG_BIT(CMPCR1, CMPCR1_CMPIF_MSK)
  3. #define CMP_ClearFlag()                 SET_REG_BIT(CMPCR1, CMPCR1_CMPIF_MSK)
复制代码


AiCube自动生成的中断函数如下,这会导致一旦进入中断后就跳不出来了。
  1. ////////////////////////////////////////
  2. // 比较器中断服务程序
  3. // 入口参数: 无
  4. // 函数返回: 无
  5. ////////////////////////////////////////
  6. void CMP_ISR(void) interrupt CMP_VECTOR
  7. {
  8.     //<<AICUBE_USER_CMP_ISR_CODE1_BEGIN>>
  9.     // 在此添加中断函数用户代码
  10.     if (CMP_CheckFlag())                //判断比较器中断
  11.     {
  12.         CMP_ClearFlag();                //清除比较器中断标志
  13.     }
  14.     //<<AICUBE_USER_CMP_ISR_CODE1_END>>
  15. }
复制代码


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:55 , Processed in 0.115619 second(s), 44 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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