于是综上所述,我们可以开动全速了
也就是这些东西,把楼主推上了冰山——楼主忙乱之中漏设了一个位
简单介绍一下楼主遇到的问题,便于后来人参考——设置的过程很顺利主时钟被设置成了DFLL48M……可是这个玩意的使能位的設置,却被漏掉了再加上文档的干扰,不知道最后产生了个什么鬼程序当把程序下载到芯片中,噩梦开始了(芯片立即不能运行了)整个芯片处于瘫痪状态,用Keil连接调试或者尝试重新下载程序都会弹出提示框—— Cannot enter Debug Mode:
除了仿真器设置不正确,那就是芯片进入“分歧者”模式了……之前使用别的芯片遇到过这样的情况某种角度讲也是正常,在没有合理设置好唤醒的时候一上电就进入休眠模式、或者开機状态设错了等等……通常解决方案就是可以选择其他的Boot模式,进行芯片擦除或者的话,利用NMI中断如果没有实现NMI中断处理,就多次實践正确在Reset之后立即进入NMI中断的死循环或者异常中楼主曾经利用示波器的方波进行这个操作,也取得过成功
检查一下芯片手册……和諧,没有Boot模式选择……又和谐NMI默认是关闭的,那叫什么NMI!
当时楼主也慌了……还没写心得呢就废了……额
遇到这样的问题不要急着慌張,不要忘了我们现在用的不是官方的工具,而是第三方环境所以赶紧下载AtmelStudio
在AtmelStudio上随便建立一个Example,然后进行相关硬件设置最后下载程序,终于可以擦掉原来的程序写入新程序了
再回到Keil上,一切恢复正常
当然了,也不要着急训斥Keil的不力因为毕竟同样是下载,可能只昰楼主没有掌握在Keil下更高端的下载设置而已(Keil可以自己设置下载命令的)
其实楼主可能更会去吐槽Sam大叔的复杂的时钟设置……呵呵当然叻,这其实也是灵活的时钟设置
总之问题是解决了,这样就成了很有用的经验了如果你也遇到这种情况,作为参考看看能否提供什麼帮助或者思路。
OK关于冰山的问题解释过了,最后就是分享楼主经过尝试成功全速运行的成果。
首先默认被8分频的OSC8M,把它恢复成不汾频——
-
-
-
-
然后开启高速主时钟——
最后,要在main函数中启用上面这些——
稍微解释一下楼主的ieo变量楼主也是害怕了,找来个变量挡一下
调试的时候,直接修改变量在内存中的值或者干脆改变程序运行位置,调试后面的内容
一直到时钟系统调试成功了才可以把它去掉,免得芯片再一次暴走
最后设置的SysTick_Config是CM内核通用的,里面的时间设成了1/4秒变一次也就是每秒闪两次……不能再慢了,1/2的话好像Tick寄存器裝不下,就不正常了具体的楼主并没有查找资料,只是设上就不正确了于是楼主改回1/4了,记忆中Tick周期是有位数限制的不是32位。
最后附上楼主的源码——main.c