试了两款LM3S8962和LM3S9B96,问题都一样。
LM3S系列能够将程序下载到内存,然后修改PC指针,在内存中运行,这样调试程序下载速度比较快,也减少了flash的读写次数,这是背景。
除了一些大的程序,我都是在内存中调试,简称RAM RUN,大家可以翻翻我以前的一个DS18B20的帖子,当时调试DS18B20时,是下载到flash中调试的,后来学会了RAM RUN,调试程序一直在RAM,但是这个DS18B20的程序,下载到ROM里运行,一切正常,但是下载到flash里,就无法搜索到器件,所以可以确定肯定是RAM的问题。今天用数字逻辑分析仪看了DS18B20数据管脚上的波形,发现波形的延时不对。刚刚特地写了一个延时程序,产生一个100Hz的方波,来看看到底怎么回事:
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE,0x80);
while(1)
{
GPIOPinWrite(GPIO_PORTC_BASE,0x80,0x00);
_delay_ms(5);
GPIOPinWrite(GPIO_PORTC_BASE,0x80,0x80);
_delay_ms(5);
}
先是下载到ROM里,看波形:
正常,然后下载到RAM里,再看波形:
发现延时很大,不知道怎么回事。
不知道有没有人能给个解释?
此帖出自
小平头技术问答
一周热门 更多>