初级会员

- 积分
- 192
- 金钱
- 192
- 注册时间
- 2020-3-24
- 在线时间
- 52 小时
|
1金钱
问题描述:上电后MCU屏读出的ID不对,为0x4040,导致屏幕不能正常显示。后来用外部ram验证时发现,从起始地址写入连续的0、1、2、3,,,,数据时,观察窗口,相应的ram区显示的数都加了0x40,显示的是0x40、0x41,,,,,。起初怀疑是硬件的问题,但后来无意中用5.30版本的编译程序后,下载运行,屏幕显示居然正常了,读出来的LCD ID也显示是0x5310,当时以为是软件编译的问题,就搁下了,当时也就这个问题发了帖子求助了。
今天在研究学习的时候发现屏幕显示又不正常了,ID又变成了0x4040,于是又开始怀疑是已经的问题,自己在中间加了一段测试程序,用万用表量了相应的管脚,电压显示也正常并且在相应的变化着,然后把测试程序屏蔽后,重新编译下载运行,奇迹发生了,屏幕显示又正常了,ID也对了,真是百思不得其解,望高手指点一二。
int main(void)
{
Cache_Enable(); //′ò¿aL1-Cache
HAL_Init(); //3õê¼»ˉHAL¿a
Stm32_Clock_Init(160,5,2,4); //éèÖÃê±Öó,400Mhz
delay_init(400); //Ñóê±3õê¼»ˉ
// do
// {
// GPIO_InitTypeDef GPIO_Initure;
// __HAL_RCC_GPIOE_CLK_ENABLE(); //ê1Äüê±Öó
//
// GPIO_Initure.Pin=GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
// GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //íÆíìêä3ö
// GPIO_Initure.Pull=GPIO_PULLUP; //éÏà-
// GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//¸ßËù
// HAL_GPIO_Init(GPIOE,&GPIO_Initure); //3õê¼»ˉ
// delay_ms(3000);
//
// HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_7);
// HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_8);
// HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_9);
// HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_10);
//
// }while(1);
uart_init(115200); //′®¿ú3õê¼»ˉ
LED_Init(); //3õê¼»ˉLED
说明一下,用的一直都是原子哥的源码。
|
最佳答案
查看完整内容[请看2#楼]
问题的真正原因找到了,很长时间一直在纠结这个问题。今天硬着头皮把所有的数据线和控制线都设置成输出,程序里定时让电平翻转,然后一个一个测量管脚的变化。在测量D6的时候发现此管脚最高电压只能到1V,于是就猜测是不是电源功率不够啊?正好手上有一个12V2A的适配器,换上以后再测,D6电平变化正常。再下载例程程序,显示也正常了!可以美美的睡一觉了
|