- #include "stm32f4xx.h" //Include main header for MCU
- #define DATA_PORT GPIOC->ODR
- #define CMD_PORT GPIOA->ODR
- #define DATA 6
- #define DATA_CLR 0xFFFFFC3F
- #define LCD_E 0x100 //PA8
- #define LCD_RS 0x200 //PA9
- #define CMD 0
- #define TXT 1
- #define LINE1 0x80 // Start address of first line
- #define LINE2 0xC0 // Start address of second line
- void WaitLCDBusy(void);
- void LCD_Init(void);
- void LCD_DATA(unsigned char data,unsigned char type);
- void LCD_NYB(unsigned char nyb,unsigned char type);
- void LCD_STR(const char *text);
- void LCD_LINE(char line);
- void DelayMS(unsigned int ms);
- void initDiscovery(void);
- void delay(int ticks)
- {
- while(ticks--);
- }
- void lcd_init()
- {
- CMD_PORT &= ~(LCD_E); //LCD_E = 0; //clear enable
- CMD_PORT &= ~(LCD_RS); //LCD_RS = 0; //going to write command
- DelayMS(30); //delay for LCD to initialise.
- LCD_NYB(0x30,0); //Required for initialisation
- DelayMS(5); //required delay
- LCD_NYB(0x30,0); //Required for initialisation
- DelayMS(1); //required delay
- LCD_DATA(0x02,0); //set to 4 bit interface, 1 line and 5*7 font
- LCD_DATA(0x28,0); //set to 4 bit interface, 2 line and 5*10 font
- LCD_DATA(0x0c,0); //set to 4 bit interface, 2 line and 5*7 font
- LCD_DATA(0x01,0); //clear display
- LCD_DATA(0x06,0); //move cursor right after write
- }
- //--------------------------------------------------------------------------------//
- void LCD_DATA(unsigned char data,unsigned char type){
- WaitLCDBusy(); //TEST LCD FOR BUSY
- if(type == CMD){
- CMD_PORT &= ~(LCD_RS); //COMMAND MODE
- } else {
- CMD_PORT |= LCD_RS; //CHARACTER/DATA MODE
- }
- LCD_NYB(data>>4,type); //WRITE THE UPPER NIBBLE
- LCD_NYB(data,type); //WRITE THE LOWER NIBBLE
- }
- //--------------------------------------------------------------------------------//
- void WaitLCDBusy(void){
- DelayMS(2); //DELAY 1 MilliSeconds
- }
- //--------------------------------------------------------------------------------//
- void LCD_NYB(unsigned char nyb,unsigned char type){
- DATA_PORT &= DATA_CLR; //LCD_PORT &= 0xF0; //CLEAR LOWER PORT NIBBLE
- DATA_PORT |= (nyb<<DATA); //LCD_PORT |= (nyb & 0x0F); //SEND DATA LINE THE INFO
- if(type == CMD){
- CMD_PORT &= ~(LCD_RS); //COMMAND MODE
- } else {
- CMD_PORT |= LCD_RS; //CHARACTER/DATA MODE
- }
- CMD_PORT |= LCD_E; //LCD_E = 1; //ENABLE LCD DATA LINE
- delay(100); //SMALL DELAY
- CMD_PORT &= ~(LCD_E); //LCD_E = 0; //DISABLE LCD DATA LINE
- }
- //--------------------------------------------------------------------------------//
- void LCD_STR(const char *text){
- while(*text){
- LCD_DATA(*text++,1);
- }
- }
- void LCD_STR2(unsigned char *text){
- while(*text)
- {
- LCD_DATA(*text++,1);
- }
- }
- //--------------------------------------------------------------------------------//
- void LCD_LINE(char line){
- switch(line){
- case 0:
- case 1:
- LCD_DATA(LINE1,0);
- break;
- case 2:
- LCD_DATA(LINE2,0);
- break;
- }
- }
- //--------------------------------------------------------------------------------//
- //--------------------------------------------------------------------------------//
- void DelayMS(unsigned int ms){
- unsigned int x;
- for(x=0;x<ms;x++)
- delay(600);
- }
- // Main //
- void initDiscovery(void)
- {
- RCC->CFGR = RCC_CFGR_SW_HSE;
- RCC->AHB1ENR = RCC_AHB1ENR_GPIOAEN|RCC_AHB1ENR_GPIOCEN;
- RCC->CR |= RCC_CR_HSEON;
- while((RCC->CR & RCC_CR_HSERDY)==0);
- GPIOC->MODER=GPIO_MODER_MODER6_0|GPIO_MODER_MODER7_0|GPIO_MODER_MODER8_0|GPIO_MODER_MODER9_0;
- GPIOA->MODER=GPIO_MODER_MODER8_0|GPIO_MODER_MODER9_0;
- GPIOC->OSPEEDR = GPIO_OSPEEDER_OSPEEDR6_1 | GPIO_OSPEEDER_OSPEEDR7_1 | GPIO_OSPEEDER_OSPEEDR8_1 | GPIO_OSPEEDER_OSPEEDR9_1;
- GPIOA->OSPEEDR = GPIO_OSPEEDER_OSPEEDR8_1 | GPIO_OSPEEDER_OSPEEDR9_1;
- }
- void main()
- {
- initDiscovery();
- lcd_init();
- DelayMS(3);
- LCD_LINE(1);
- LCD_STR((const char*)" Test ");
- DelayMS(100);
- LCD_LINE(2);
- LCD_STR((const char*)" STM32F4 LCD ");
- DelayMS(100);
- while(1)
- {
- }
- }
Ярлыки
_GetPixelIndex
(1)
_SetPixelIndex
(1)
3-phase
(1)
800x480
(1)
АЦП
(1)
генератор
(1)
синхронный усилитель
(2)
структура
(1)
учебный курс
(1)
шаговый двигатель
(1)
ШИМ
(2)
accert
(1)
AD7608
(1)
AD8429
(1)
ADC
(5)
amplifer
(1)
arccos
(1)
arcsin
(1)
arctang
(2)
arctg
(3)
ARM
(2)
arm_sqrt_q15
(2)
assembler
(6)
ASSERT
(1)
atan
(2)
bit
(1)
Bitband
(1)
boot
(3)
bootlloader
(1)
BUTTON
(1)
C
(5)
C#
(1)
CAN
(2)
CC2530
(5)
CMSIS
(4)
command
(1)
Cordic
(1)
Core746I
(1)
CubeMX
(4)
DBGMCU
(2)
debug
(2)
debug.ini
(1)
delegate
(1)
Digital Potentiometers
(1)
DigitalPOT
(1)
Discovery
(1)
DMA
(9)
DMA2D
(1)
DSP
(1)
DSP library
(1)
DWT
(1)
EFM32
(5)
EmWin
(9)
EXTI
(1)
FATFS
(1)
FMC
(2)
FreeRTOS
(2)
gl868-dual cmux
(1)
GPIO
(4)
GUI
(2)
GUIBuilder
(1)
GUIDRV_CompactColor_16
(1)
HAL
(3)
HappyGecko
(1)
Hard Fault
(2)
heap
(1)
I2C
(1)
ID
(1)
ILI9320
(1)
ILI9325
(1)
Initialisation
(1)
InitLTDC
(1)
Instrumentithion
(1)
Interrupt
(4)
ITR
(1)
JTAG
(1)
Keil
(5)
LCDConf
(2)
lock-in
(1)
LTCD
(1)
LTDC
(3)
main
(1)
memory
(1)
MINI_STM32 Revision 01
(1)
nBoot0
(1)
NVIC
(1)
OnePulse
(2)
OSAL
(4)
pack
(1)
phase
(1)
printf
(3)
Pulse
(1)
PWM
(12)
RCC
(2)
RCR
(1)
Register
(1)
RESET
(2)
RS232
(3)
RSS
(1)
RTC
(3)
RTOS-RTX
(1)
RTT
(1)
RTX-RTOS
(1)
SDCard
(1)
SDRAM
(6)
Segger
(2)
SPI
(3)
sqrt
(3)
SSD1298
(1)
SSD1963
(1)
Standart Peripherial Library
(3)
STANDBAY
(1)
startup
(1)
STemWin
(8)
stepper motor
(1)
STlink
(2)
STM32
(17)
STM32429ZI
(1)
STM32Cube
(1)
STM32DBG.IN
(1)
STM32F
(28)
STM32F0
(4)
STM32F1
(13)
STM32F4
(10)
STM32F4 Discovery
(1)
STM32F407ZG
(1)
STM32F429
(2)
STM32F746
(1)
STOP
(1)
string
(1)
struct
(1)
SWD
(1)
SWD JTAG
(1)
Synhronization
(1)
system_stm32f4xx.c
(1)
SystemInit
(1)
SysTick
(1)
task
(4)
telit
(1)
TIM
(27)
typedef
(1)
UART
(1)
USART
(9)
viewer
(2)
WM_PAINT
(1)
Z-stack
(5)
ZigBee
(5)
суббота, 20 декабря 2014 г.
STM32F4 & LSD
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий