#include "stm32f4xx.h" #include <math.h> #include "delay.h" #include "LCD.h" #include "pic.h" void IO_init(void); void delay_ms(unsigned long ms); void delay_ns(unsigned long ns); void set_cs(void); void reset_cs(void); void set_res(void); void reset_res(void); void set_rs(void); void reset_rs(void); void set_wr(void); void reset_wr(void); void set_rd(void); void reset_rd(void); void write_com(unsigned char para); void write_data(unsigned char para); void out_data_port(unsigned short data); void clear_display(void); void systick_init(void); unsigned char input_data_port(void); unsigned char out_or_input_flag =1; int main(void) { systick_init(); IO_init(); delay_ms(100); set_rd(); LCD_Init();
delay_ms(100); while(1) { LCD_Clear(LCD_BGR2RGB(RED)); delay_ms(200); LCD_Clear(LCD_BGR2RGB(GREEN)); delay_ms(200); LCD_Clear(LCD_BGR2RGB(BLUE)); delay_ms(200); display_pic(gImage); delay_ms(3000); display_pic(gImage_2); delay_ms(3000); } } void IO_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 |GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); } void clear_display(void) { write_com(0x01); delay_ms(10); } /* void write_com(volatile unsigned char para) { reset_rs(); reset_wr(); delay_ns(20); out_data_port(para); delay_ns(20); set_rd(); delay_ns(20); reset_rd(); delay_ns(20); } */ void write_com(volatile unsigned char para) { reset_cs(); // 0 : select delay_ns(20); reset_rs(); // 1 : command delay_ns(20); // reset_wr(); // 0 // set_rd(); //delay_ns(2); out_data_port(para); delay_ns(20); reset_wr(); delay_ns(20); set_rd(); set_wr(); } /* void write_data(volatile unsigned char para) { set_rs(); reset_wr(); delay_ns(20); out_data_port(para); delay_ns(20); set_rd(); delay_ns(20); reset_rd(); delay_ns(20); } */ void write_data(volatile unsigned char para) { reset_cs(); // 0 : select delay_ns(20); set_rs(); // 0: data delay_ns(20); // reset_wr(); // 0 // set_rd(); //delay_ns(2); out_data_port(para); delay_ns(20); reset_wr(); delay_ns(20); set_rd(); set_wr(); // set_cs(); set_rs(); } void out_data_port(unsigned short Data) { GPIOC->ODR= Data; } unsigned char input_data_port(void) { unsigned charData; out_data_port(0XFFFF); Data =GPIO_ReadInputData(GPIOC); return Data; } void set_cs(void) { GPIOA->BSRRL= GPIO_Pin_7; } void reset_cs(void) { GPIOA->BSRRH= GPIO_Pin_7; } void set_res(void) { GPIOA->BSRRL= GPIO_Pin_6; } void reset_res(void) { GPIOA->BSRRH= GPIO_Pin_6; } void set_rs(void) { GPIOA->BSRRL= GPIO_Pin_5; } void reset_rs(void) { GPIOA->BSRRH= GPIO_Pin_5; } void set_wr(void) { GPIOA->BSRRL= GPIO_Pin_4; } void reset_wr(void) { GPIOA->BSRRH= GPIO_Pin_4; } void set_rd(void) { GPIOA->BSRRL= GPIO_Pin_3; } void reset_rd(void) { GPIOA->BSRRH= GPIO_Pin_3; } unsigned char poll_button(void) { if((GPIOA->IDR& GPIO_Pin_0) == 0) { return(0); } else { return(1); } } unsigned char MCU_WAIT(void) { if((GPIOA->IDR& GPIO_Pin_0) == 0) { return(0); } else { return(1); } } void systick_init(void) { if(SysTick_Config(SystemCoreClock / 18000)) //10000 6KHz main loop { /*Capture error */ while(1); } NVIC_SetPriority(SysTick_IRQn,15); }
|