为什么注释掉delay_init就白屏
主函数
float t=0;
// delay_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); //使能A端口时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
//LED_Init();//LED初始化
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能A端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
while(1)
{
LCD_ShowChinese(0,0,"中景园电子",RED,WHITE,24,0);
LCD_ShowString(24,30,"LCD_W:",RED,WHITE,16,0);
LCD_ShowIntNum(72,30,LCD_W,3,RED,WHITE,16);
LCD_ShowString(24,50,"LCD_H:",RED,WHITE,16,0);
LCD_ShowIntNum(72,50,LCD_H,3,RED,WHITE,16);
LCD_ShowFloatNum1(20,80,t,4,RED,WHITE,16);
t+=0.11;
if (GPIO_ReadInputDataBit (GPIOA,GPIO_Pin_7 )==0)
{
delay_ms (20);
while(GPIO_ReadInputDataBit (GPIOA,GPIO_Pin_7 ));
delay_ms (20);
LCD_ShowPicture(65,80,40,40,gImage_1);
}
}
delay函数
void delay_init()
{
#ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
u32 reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8
fac_us=SystemCoreClock/8000000; //为系统时钟的1/8
#ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
reload=SystemCoreClock/8000000; //每秒钟的计数次数 单位为K
reload*=1000000/OS_TICKS_PER_SEC;//根据OS_TICKS_PER_SEC设定溢出时间
//reload为24位寄存器,最大值:16777216,在72M下,约合1.86s左右
fac_ms=1000/OS_TICKS_PER_SEC;//代表ucos可以延时的最少单位
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //开启SYSTICK中断
SysTick->LOAD=reload; //每1/OS_TICKS_PER_SEC秒中断一次
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //开启SYSTICK
#else
fac_ms=(u16)fac_us*1000;//非ucos下,代表每个ms需要的systick时钟数
#endif
}