本文引用地址:http://m.butianyuan.cn/article/201611/322858.htm
GPIO_InitTypeDefGPIO_InitStructure;//定義GPIO初始化的結(jié)構(gòu)體變量
ErrorStatusHSEStartUpStatus;//定義錯誤狀態(tài)變量,是枚舉類型
voidRCC_Configuration(void);
voidNVIC_Configuration(void);
voidDelay(vu32nCount);
intmain(void)
{
#ifdefDEBUG
debug();
#endif
RCC_Configuration();//系統(tǒng)時鐘配置函數(shù)
NVIC_Configuration();//NVIC配置函數(shù)
//啟動GPIO模塊時鐘使能APB2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
//把調(diào)試設(shè)置普通IO口禁止SWJ
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;//所有GPIO為同一類型端口選中所有的IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//輸出的最大頻率為50HZ
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA端口
GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOB端口
GPIO_Write(GPIOA,0xffff);//將GPIOA16個端口全部置為高電平
GPIO_Write(GPIOB,0xffff);//將GPIOB16個端口全部置為高電平
LCD_Init();//彩屏初始化
Pant(colors[5]>>8,colors[5]);//把全屏涂成color[5]顏色
LCD_cs(0);//打開片選使能
//下面是要顯示的內(nèi)容
ChineseChar(14+46,10,2,colors[2],colors[7],1);
ChineseChar(46+46,10,2,colors[2],colors[7],2);
ChineseChar(78+46,10,2,colors[2],colors[7],3);
ChineseChar(110+46,10,2,colors[2],colors[7],4);
LCD_ShowString(12,60,colors[0],colors[7],"-");
ChineseChar(20,60,1,colors[0],colors[7],1);//帶
ChineseChar(44,60,1,colors[0],colors[7],2);//您
ChineseChar(68,60,1,colors[0],colors[7],3);//進(jìn)
ChineseChar(92,60,1,colors[0],colors[7],4);//入
ChineseChar(116,60,1,colors[0],colors[7],5);//單
ChineseChar(140,60,1,colors[0],colors[7],6);//片
ChineseChar(164,60,1,colors[0],colors[7],7);//機
ChineseChar(188,60,1,colors[0],colors[7],8);//世
ChineseChar(212,60,1,colors[0],colors[7],9);//界
ChineseChar(0,120,1,colors[4],colors[7],10);//專
ChineseChar(24,120,1,colors[4],colors[7],11);//業(yè)
ChineseChar(48,120,1,colors[6],colors[7],12);//技
ChineseChar(72,120,1,colors[6],colors[7],13);//術(shù)
ChineseChar(96,120,1,colors[2],colors[7],14);//論
ChineseChar(120,120,1,colors[2],colors[7],15);//壇
//LCD_ShowString(92,120,colors[4],colors[7],":");
LCD_ShowString(0,240,colors[2],colors[7],"abcdefJhiJKLMNOP");
LCD_ShowString(0,265,colors[2],colors[7],"pqrstuvwxyz!@#$");
LCD_ShowString(0,290,colors[2],colors[7],"<>CDEF^&*()/,[]");
LCD_cs(1);//關(guān)閉片選使能
while(1);
}
voidRCC_Configuration(void)
{
//復(fù)位RCC外部設(shè)備寄存器到默認(rèn)值
RCC_DeInit();
//打開外部高速晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待外部高速時鐘準(zhǔn)備好
HSEStartUpStatus=RCC_WaitForHSEStartUp();
if(HSEStartUpStatus==SUCCESS)//外部高速時鐘已經(jīng)準(zhǔn)別好
{
//開啟FLASH的預(yù)取功能
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//FLASH延遲2個周期
FLASH_SetLatency(FLASH_Latency_2);
//配置AHB(HCLK)時鐘=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2(PCLK2)鐘=AHB時鐘
RCC_PCLK2Config(RCC_HCLK_Div1);
//配置APB1(PCLK1)鐘=AHB1/2時鐘
RCC_PCLK1Config(RCC_HCLK_Div2);
//配置PLL時鐘==外部高速晶體時鐘*9PLLCLK=8MHz*9=72MHz
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
//使能PLL時鐘
RCC_PLLCmd(ENABLE);
//等待PLL時鐘就緒
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}
//配置系統(tǒng)時鐘=PLL時鐘
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//檢查PLL時鐘是否作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource()!=0x08)
{
}
}
}
voidNVIC_Configuration(void)
{
#ifdefVECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
}
voidDelay(vu32nCount)
{
for(;nCount!=0;nCount--);
}
#ifdefDEBUG
voidassert_failed(u8*file,u32line)
{
while(1)
{
}
}
#endif
評論