This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,目前做的一个项目具有LCD显示,ad采样功能,ad采样每次采样都会进入LPM0,ad采样数据是否只有中断采样的办法,目前发现如果在while循环实现LCD显示程序的话,必须设置一个定时中断不断唤醒才能正常工作。这样需要频繁进入中断,提升采样率让其在AD中断中唤醒是否有用?
例程里都是这样写的
while(1)
{
__delay_cycles(5000); // Delay between conversions
ADC12CTL0 |= ADC12ENC | ADC12SC; // Sampling and conversion start
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC10_ISR will force exit
__no_operation(); // For debug only
}
while循环里放的显示的程序,如果这两句放循环外面会出现黑屏
如果您是放在while(1)之前的话,MCU已经进入LPM0模式,LCD驱动模块是不能工作的。
我不知道您上面说的:
AD开始转化后,如果不进入LPM0模式的话,LCD会不正常显示,出现黑屏
是指这个吗?
MSP430FR6972上的LCD驱动模块是LCD_C,在LPM0模式下是不能工作的,即使是LCD_E最多也只能工作在LPM3.5模式下。
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC10_ISR will force exit
您把这个语句放在循环只外的话,它在LCD显示程序之前就已经进入LPM0了,我想这应该是黑屏的原因。
您用的这个方法就是可以的。
除此之外,将这行代码:
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC10_ISR will force exit
直接注释掉也行。