3195|0

327

帖子

1

TA的资源

纯净的硅(初级)

楼主
 

EXTI_CR1写入无效 [复制链接]

本帖最后由 shipeng 于 2017-11-24 09:13 编辑

最近在编写STM8S207的程序遇到一个看似莫名其妙的问题,外部中断无法切换为上升下降双边沿模式。进入调试状态查原因的时候发现问题出在EXTI_CR1写入无效。明明刚刚执行了EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_FALL);或者直接赋值EXTI_CR1=0x30;查看寄存器EXTI_CR1的值却还是0x00。无奈只能去检索资料于是发现这条重要内容:

“这些位仅在CC寄存器的I1和I0位都为1(级别3)时才可以写入。这些位定义端口D 的中断触发位”这句是问题的原因所在。通过仿真的时候查看寄存器发现在执行修改EXTI_CR1寄存器的时候I1和I0确实不都为1.那么又是什么原因引起的呢?仿真真是个好工具啊,某些人说他们写程序从来不用仿真我认为都是赤裸裸的嚣张和狂妄自大!查找原因的办法就是从程序第一句开始单步运行并密切关注I1和I0的值,最后发现执行到AD初始化的函数时I1和I0的值不再是11而变为10,复位重新进入AD初始化函数内部单步运行最终发现在AD初始化内部打开了总中断enableInterrupts();总中断一旦打开I1和I0即由11变为10!

      最终问题的解决方法是在配置EXTI_CR1前要保证总中断没有打开,否则I1和I0的值就不为11,也就无法写入EXTI_CR1寄存器!
此帖出自stm32/stm8论坛
点赞 关注
个人签名模电临时工
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表