OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4388|回复: 2

STM32F1战舰移植无系统emwin出现白屏,求大佬们帮看 感激不尽

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-7-29
在线时间
8 小时
发表于 2020-9-8 17:45:09 | 显示全部楼层 |阅读模式
1金钱
现在的情况是这样的:程序运行时卡在GUI_Init(),然后跳HardFault_Handler(),DEBUG发现卡在了GUI_DEVICE_CreateAndLink函数,显示结果一直白屏。。我尝试过启动文件改系统堆栈大小,没有解决。。也没有发现未定义的中断。。求大佬们帮看!感激不尽!
下面是主函数的代码(这一堆定时器的定义是界面按键功能要用到的):
  1. int main(void)
  2. {         
  3.         delay_init();                    //延时函数初始化          
  4.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  5.         uart_init(115200);                 //串口初始化为115200
  6.         LED_Init();                            //LED端口初始化
  7.         TFTLCD_Init();                        //LCD初始化       
  8.         KEY_Init();                                 //按键初始化
  9.         TP_Init();                                //触摸屏初始化
  10.         FSMC_SRAM_Init();                //初始化SRAM

  11.         TIM3_PWM_Init(20000,71);         //时器计数频率72000000/72=1000khz,计数间隔0.001ms 定时器周期为20ms       
  12.         TIM4_PWM_Init(20000,71);         //定时器计数频率72000000/72=1000khz,计数间隔0.001ms 定时器周期为20ms       
  13.         TIM5_PWM_Init(20000,71);         //定时器计数频率72000000/72=1000khz,计数间隔0.001ms 定时器周期为20ms       

  14.         TIM_SetCompare1(TIM3,1530); //PC6  设置脉冲占空比,PC6为STM32的脉冲输出端口
  15.         TIM_SetCompare2(TIM3,2390); //PC7  
  16.         TIM_SetCompare3(TIM3,1460); //PC8
  17.         TIM_SetCompare4(TIM3,1500); //PC9
  18.         TIM_SetCompare1(TIM4,1500); //PD12
  19.         TIM_SetCompare2(TIM4,2500); //PD13
  20.        
  21.         TIM_SetCompare3(TIM4,1470); //PD14   
  22.         TIM_SetCompare4(TIM4,2480); //PD15
  23.         TIM_SetCompare1(TIM5,1440); //PA0   
  24.         TIM_SetCompare2(TIM5,1530); //PA1
  25.         TIM_SetCompare3(TIM5,1500); //PA2   
  26.         TIM_SetCompare4(TIM5,2500); //PA3
  27.        
  28.         TIM2_Int_Init(999,71);        //1KHZ 定时器1ms
  29.         TIM6_Int_Init(999,719);        //10ms中断

  30.         my_mem_init(SRAMIN);                 //初始化内部内存池
  31.         my_mem_init(SRAMEX);                  //初始化外部内存池
  32.        
  33.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);//使能CRC时钟,否则STemWin不能使用
  34.         WM_SetCreateFlags(WM_CF_MEMDEV);
  35.         GUI_Init();
  36.         CreateFramewin();
  37.                 while(1){
  38.                         GUI_Delay(100);
  39.                 }
  40. }
复制代码
另外,今天发现如果把中间那一段自己的定时器配置注释掉,界面就会显示出来。。。但是加上就不行,如下代码可以有界面:

  1. int main(void)
  2. {         
  3.         delay_init();                    //延时函数初始化          
  4.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  5.         uart_init(115200);                 //串口初始化为115200
  6.         LED_Init();                            //LED端口初始化
  7.         TFTLCD_Init();                        //LCD初始化       
  8.         KEY_Init();                                 //按键初始化
  9.         TP_Init();                                //触摸屏初始化
  10.         FSMC_SRAM_Init();                //初始化SRAM       
  11.         TIM2_Int_Init(999,71);        //1KHZ 定时器1ms
  12.         TIM6_Int_Init(999,719);        //10ms中断

  13.         my_mem_init(SRAMIN);                 //初始化内部内存池
  14.         my_mem_init(SRAMEX);                  //初始化外部内存池
  15.        
  16.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);//使能CRC时钟,否则STemWin不能使用
  17.         WM_SetCreateFlags(WM_CF_MEMDEV);
  18.         GUI_Init();
  19.         CreateFramewin();
  20.                 while(1){
  21.                         GUI_Delay(100);
  22.                 }
  23. }
复制代码
这是哪里出了问题呢。。。时钟定义看起来也并没有冲突。。
求大佬帮助!!也欢迎一起讨论!谢谢谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

314

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1039
金钱
1039
注册时间
2020-7-21
在线时间
258 小时
发表于 2020-9-8 20:40:58 | 显示全部楼层
把定时器按照顺序来初始化试试,还有你那个WM_SetCreateFlags不要放在GUI_Init前面,应该等到GUI_Init后使用
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-7-29
在线时间
8 小时
 楼主| 发表于 2020-9-9 10:11:04 | 显示全部楼层
DFY 发表于 2020-9-8 20:40
把定时器按照顺序来初始化试试,还有你那个WM_SetCreateFlags不要放在GUI_Init前面,应该等到GUI_Init后使 ...

感谢回复,按照你说的方法试了下,还是不太行orz。。。
我在想会不会是定时器通道之间相互占用了导致的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表