最近在做cortex的实验过程中发生了一个问题,某个实验需要改变系统的时钟,因此我调用了函数:
uint32_t SysCtlClockFreqSet(uint32_t ui32Config, uint32_t ui32SysClock) 来设置我所需要的频率,根据手册中对函数的描述,我们可以知道,最后一个参数是你所需要的频率,系统会根据你给的参数设置成一个最接近的频率,在测试这个函数的过程中好像输入了一个非法的参数,导致系统时钟gg了,再也不能烧写了,keil的debug里也找不到我的设备,检查了驱动都是OK的,最后找了个英文论坛的资料才解决,这里记录一下。
首先,烧写失败最大的可能还是因为驱动的问题,所以建议还是先打开设备管理,以我使用的板子为例,
可以看到两个部分的驱动都没有黄色感叹号之类的标志,因此我的驱动是好的,还有一个办法是,如果旁边有其他的板子,借来烧一下,如果烧的进去,就说明是你的板子的问题。
打开软件UNIFLASH,用数据线连接上实验板, 选择对应的device,我的板子是TM4C1294XL,因此选择了EK-TM4C1294XL:
然后start,烧写测试用文件,提示我,frequency is out of range.
解决的办法其实也很简单,只要把板子unlock一下,应该就是擦除其中写的东西,回复默认设置。
首先打开UNIFLASH, 然后仍然选择你的板子型号,start。
点击Settings & Utilities, 找到Unlock的选项,如下图。
注意他的提示! Please press and hold reset on device while powering up before clicking on the Unlock button. 如果你是西南某高校的同学,说明你的板子和我的板子是一样的,reset按键在红色板子部分的四个按键之一中,上面有文字提示,如果不懂resret是哪个,在板子上找找文字,或者打开手册找找原理图,查一查吧~