CLOCK_SYS_ConfigModuleClock(PME_CLK, NULL);
//Set pin mode
PINS_SetMuxModeSel(LED_RED_PORT_BASE, LED_RED_PIN, PM_MUX_AS_GPIO);
PINS_SetMuxModeSel(LCD_GPIO, LCD1_PIN, PM_MUX_AS_GPIO);
PINS_SetMuxModeSel(LCD_GPIO, LCD2_PIN, PM_MUX_AS_GPIO);
PINS_SetMuxModeSel(LCD_GPIO, LCD3_PIN, PM_MUX_AS_GPIO);
PINS_SetMuxModeSel(LCD_GPIO, LCD4_PIN, PM_MUX_AS_GPIO);
//Set pin interrupt
PINS_SetPinIntSel(LCD_GPIO, LCD1_PIN, PM_DMA_INT_DISABLED);
PINS_SetPinIntSel(LCD_GPIO, LCD2_PIN, PM_DMA_INT_DISABLED);
PINS_SetPinIntSel(LCD_GPIO, LCD3_PIN, PM_DMA_INT_DISABLED);
PINS_SetPinIntSel(LCD_GPIO, LCD4_PIN, PM_DMA_INT_DISABLED);
//GPIO Initialization
PINS_SetPins(GPIOE, 1U << LCD1_PIN);
PINS_SetPins(GPIOE, 1U << LCD2_PIN);
PINS_SetPins(GPIOE, 1U << LCD3_PIN);
PINS_SetPins(GPIOE, 1U << LCD4_PIN);
//Set pin as output
PINS_SetPinDir(GPIOE, LCD1_PIN, 1U);
PINS_SetPinDir(GPIOE, LCD2_PIN, 1U);
PINS_SetPinDir(GPIOE, LCD3_PIN, 1U);
PINS_SetPinDir(GPIOE, LCD4_PIN, 1U);
感觉有点浪费,常规是不定义无功能——高阻悬浮态,不过都定义以下不容易出错也好。之后就是将12864.h include到主函数上,以前有定义显示的基本参数,这次加了点与开发板有关的,而后定义了程序计数器加在G32A1xxx_int.h的void SysTick_Handler(void)中:js++;运行后没有结果才想起来没有定义Systick的中断向量,只好在主函数的循环语句中加上:
if(js>999999)js=0;else js++;
遍历工程,搜到一个毫秒定时器在osif.h中,将这和连接到主函数和12864.h中作为定时器用,省的自己编一个定时器。
另外参照主函数中LED点亮方式,设置蓝色LED频闪:
LED_Off(2);
dispMes();
OSIF_TimeDelay(500);
LED_On(2);
OSIF_TimeDelay(50);
这样原函数中的按键还有效,lcd也点亮了,频闪led也OK了,见照片。
左向右:按键LED_RED亮、开机时三色亮——白色、按键将LED_RED灭了蓝灯闪亮、蓝灯闪灭。