STM 32 F 407にemwinを移植
7285 ワード
STM 32 F 407にemwinを移植
このブログのリンク:http://blog.csdn.net/jdh99,作者:jdh,転載は明記してください.
環境:
ホスト:WIN 8
開発環境:MDK 5.13
Emwinバージョン:STemWinLibrary 522
mcu: stm32f407VGT6
開発ボード:アンフレーSTM 32-X 3
TFT型番:艾藍2.8寸TFT、主制御チップ:ILI 9325
説明:
STM 32 F 407にemwinを移植し、駆動画面インタフェースはFSMC
移行手順:
1.MDK新規ファイル構造:
2.GUIConf.cファイルの変更
a)マクロ定義を追加する:
b)GUI_X_Config(void)関数に文を追加します.
STM 32 F 407にemwinを移植
このブログのリンク:http://blog.csdn.net/jdh99,作者:jdh,転載は明記してください.
環境:
ホスト:WIN 8
開発環境:MDK 5.13
Emwinバージョン:STemWinLibrary 522
mcu: stm32f407VGT6
開発ボード:アンフレーSTM 32-X 3
TFT型番:艾藍2.8寸TFT、主制御チップ:ILI 9325
説明:
STM 32 F 407にemwinを移植し、駆動画面インタフェースはFSMC
移行手順:
1.MDK新規ファイル構造:
2.GUIConf.cファイルの変更
a)マクロ定義を追加する:
#define GUI_NUMBYTES (1024 * 80)
#define GUI_BLOCKSIZE 0x80
b)GUI_X_Config(void)関数に文を追加します.
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
:
/*********************************************************************
*
* GUI_X_Config
*
* Purpose:
* Called during the initialization process in order to set up the
* available memory for the GUI.
*/
void GUI_X_Config(void) {
//
// 32 bit aligned memory area
//
static U32 aMemory[GUI_NUMBYTES / 4];
//
// Assign memory to emWin
//
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
//
// Set default font
//
GUI_SetDefaultFont(GUI_FONT_6X8);
}
3.LCDConf_FlexColor_Template.cファイルの
a)マクロ を する:#define LCD_REG_ADDRESS BANK1_LCD_REG
#define LCD_DATA_ADDRESS BANK1_LCD_RAM
この2つのBANKマクロ は、tftドライバファイルで されます.#define BANK1_BASE ((uint32_t)(0x60000000 | 0x00000000))
#define BANK1_LCD_RAM *(__IO uint16_t *)(BANK1_BASE + (1 << (18 + 1))) /* FSMC 16 ,FSMC_A18 A19 */
#define BANK1_LCD_REG *(__IO uint16_t *)(BANK1_BASE)
と
b) な の /*********************************************************************
*
* Local functions
*
**********************************************************************
*/
/********************************************************************
*
* LcdWriteReg
*
* Function description:
* Sets display register
*/
static void LcdWriteReg(U16 Data) {
// ... TBD by user
LCD_REG_ADDRESS = Data;
}
/********************************************************************
*
* LcdWriteData
*
* Function description:
* Writes a value to a display register
*/
static void LcdWriteData(U16 Data) {
// ... TBD by user
LCD_DATA_ADDRESS=Data;
}
/********************************************************************
*
* LcdWriteDataMultiple
*
* Function description:
* Writes multiple values to a display register.
*/
static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
LCD_DATA_ADDRESS=*pData++;
}
}
/********************************************************************
*
* LcdReadDataMultiple
*
* Function description:
* Reads multiple values from a display register.
*/
static void LcdReadDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
*pData++=LCD_DATA_ADDRESS;
}
}
/*********************************************************************
*
* Public functions
*
**********************************************************************
*/
/*********************************************************************
*
* LCD_X_Config
*
* Function description:
* Called during the initialization process in order to set up the
* display driver configuration.
*
*/
void LCD_X_Config(void) {
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
//
// Set display driver and color conversion
//
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
//
// Display driver configuration, required for Lin-driver
//
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
//
// Orientation
//
//Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
Config.FirstCOM = 0;
Config.FirstSEG = 0;
//Config.Orientation = GUI_MIRROR_X | GUI_MIRROR_Y;
Config.NumDummyReads = 2;
GUIDRV_FlexColor_Config(pDevice, &Config);
//
// Set controller and operation mode
//
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);
//GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);
}
:GUIDRV_FlexColor_SetFunc の :
マスタチップがILI 9325なのでパラメータ GUIDRV_FLEXCOLOR_F66708
4.GUI_X.cファイルの
このファイルはGUIの を しており、タイマーで して することができ、 のように することができます.
/*********************************************************************
*
* Global data
*/
volatile GUI_TIMER_TIME OS_TimeMS;
/*********************************************************************
*
* Timing:
* GUI_X_GetTime()
* GUI_X_Delay(int)
Some timing dependent routines require a GetTime
and delay function. Default time unit (tick), normally is
1 ms.
*/
extern __IO int32_t g_iRunTime;
GUI_TIMER_TIME GUI_X_GetTime(void) {
//return OS_TimeMS;
return g_iRunTime;
}
void GUI_X_Delay(int ms) {
// int tEnd = OS_TimeMS + ms;
// while ((tEnd - OS_TimeMS) > 0);
int tEnd = g_iRunTime + ms;
while ((tEnd - g_iRunTime) > 0);
}
5. :int main(void)
{
/*
ST SystemInit() , system_stm32f4xx.c ,
CPU , Flash , FSMC SRAM
*/
bsp_Init(); /* */
PrintfLogo(); /* 1 */
vLCDInit();
// vClearScreen(Green);
// vSetTextColor(Red);
// vPutString(20,0, "NanJing RF Tracking!!!!!");
// ShowImage();
//DemoFatFS(); /* SD */
//RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
GUI_Init();
GUI_DispString("I am jdh!");
while (1)
{
GUI_Delay(1000);
}
}
:RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
は です.そうしないとGUIは しません.これはST が のチップをこのGUIで することを する です.
:
:
1.STemWin5.22ノートを する.『 emwin ガイドV 1.0.0』
3.アンフレーソースプログラム:x 3 ボード_ STemWin 5.20