目的与引用的文章开始那段类似(地址:http://blog.csdn.net/billy145533/article/details/49706783):
“出于调试的目的,在仿真的时候经常要改变程序的逻辑以方便测试,不幸的是,我是一个不甚严谨的人,每次测试完,一些改动忘记改回去就发布了,经常被测试退回。
于是,我想到是否能利用stm32中的特殊寄存器判断是否在调试状态,如果是,引入我需要测试的部分,否则自动跳过,这样发布就不会出现发布调试版本的问题。有人会说,测试用debug,发布使用release,我比较懒,不想切来切去。 ”
但是可惜,这篇文章到最后貌似也没有非常明确地提到如何使用,所以只能最后祭出大杀招:google+英文关键字搜索。
果然很快就从 https://community.st.com/thread/36036-how-to-check-at-runtime-if-a-debugger-is-connected 这里找到这里:
https://community.st.com/thread/25890?commentID=69875#comment-69875
然后核心就是一句话:
debugDetect = ( CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk );
果然还是英文搜索比较靠谱。
如果想仔细研究,可以看看寄存器的详细定义:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/CEGCJAHJ.html
正文完