
STM32F429第二十五篇之MCU屏实验详解
MCU��������� SRAM������������FMC������������HAL������������ LED��������������� ������������������������������ ������������������������������������������
16��������������������������������������� A18������������������/������ NE1������������������ NWE��������������� NOE��������������� BL������������������
���ASCII���������������LCD��������������� ������
发布日期:2021-05-14 11:31:51
浏览次数:20
分类:精选文章
本文共 7117 字,大约阅读时间需要 23 分钟。
F429������SRAM������������������MCU������������������������
������
������������������������������SRAM������������F429������MCU������������������������������������������������������������
���������������������������������������1������������������������������������
������������
���������������������������������������������
������������
���������������
SRAM_HandleTypeDef
/** * @brief SRAM handle Structure definition */#ifndef USE_HAL_SRAM_REGISTER_CALLBACKStypedef struct __SRAM_HandleTypeDef { FMC_NORSRAM_TypeDef *Instance; FMC_NORSRAM_EXTENDED_TypeDef *Extended; FMC_NORSRAM_InitTypeDef Init; HAL_LockTypeDef Lock; __IO HAL_SRAM_StateTypeDef State; _DMA_HandleTypeDef *hdma;#if USE_HAL_SRAM_REGISTER_CALLBACKS void (* MspInitCallback)(struct __SRAM_HandleTypeDef *hsram); void (* MspDeInitCallback)(struct __SRAM_HandleTypeDef *hsram); void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma); void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma);#endif} SRAM_HandleTypeDef;#endif
FMC_NORSRAM_InitTypeDef
/** * @brief FMC NORSRAM Configuration Structure definition */typedef struct { uint32_t NSBank; uint32_t DataAddressMux; uint32_t MemoryType; uint32_t MemoryDataWidth; uint32_t BurstAccessMode; uint32_t WaitSignalPolarity; uint32_t WrapMode; uint32_t WaitSignalActive; uint32_t WriteOperation; uint32_t WaitSignal; uint32_t ExtendedMode; uint32_t AsynchronousWait; uint32_t WriteBurst; uint32_t ContinuousClock; uint32_t WriteFifo; uint32_t PageSize;} FMC_NORSRAM_InitTypeDef;
������������
/** FMC_NORSRAM������������ */#define FMC_NORSRAM_DEVICE FMC_Bank1/** FMC������������������ */#define FMC_R_BASE 0xA0000000UL/** FMC������������������������ */#define FMC_NORSRAM_EXTENDED_DEVICE FMC_Bank1E#define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL)
���������������
/** HAL��������������� */typedef enum { HAL_UNLOCKED = 0x00U, HAL_LOCKED = 0x01U} HAL_LockTypeDef;
������������
/** SRAM������������ */typedef enum { HAL_SRAM_STATE_RESET = 0x00U, HAL_SRAM_STATE_READY = 0x01U, HAL_SRAM_STATE_BUSY = 0x02U, HAL_SRAM_STATE_ERROR = 0x03U, HAL_SRAM_STATE_PROTECTED = 0x04U} HAL_SRAM_StateTypeDef;
FMC_NORSRAM_TimingTypeDef
/** * @brief FMC NORSRAM Timing parameters structure definition */typedef struct { uint32_t AddressSetupTime; uint32_t AddressHoldTime; uint32_t DataSetupTime; uint32_t BusTurnAroundDuration; uint32_t CLKDivision; uint32_t DataLatency; uint32_t AccessMode;} FMC_NORSRAM_TimingTypeDef;
���������
int main(void) { u8 x = 0; u8 lcd_id[12]; /* ��������������� */ HAL_Init(); Stm32_Clock_Init(360, 25, 2, 8); delay_init(180); uart_init(115200); LED_Init(); LCD_Init(); /* ��������������� */ POINT_COLOR = RED; sprintf((char *)lcd_id, "LCD ID:%04X", lcddev.id); /* while������ */ while (1) { switch (x) { case 0: LCD_Clear(WHITE); break; case 1: LCD_Clear(BLACK); break; case 2: LCD_Clear(BLUE); break; case 3: LCD_Clear(RED); break; case 4: LCD_Clear(MAGENTA); break; case 5: LCD_Clear(GREEN); break; case 6: LCD_Clear(CYAN); break; case 7: LCD_Clear(YELLOW); break; case 8: LCD_Clear(BRRED); break; case 9: LCD_Clear(GRAY); break; case 10: LCD_Clear(LGRAY); break; case 11: LCD_Clear(BROWN); break; } POINT_COLOR = RED; LCD_ShowString(10, 40, 240, 32, 32, "Apollo STM32F4/F7"); LCD_ShowString(10, 80, 240, 24, 24, "TFTLCD TEST"); LCD_ShowString(10, 110, 240, 16, 16, "ATOM@ALIENTEK"); LCD_ShowString(10, 130, 240, 16, 16, lcd_id); LCD_ShowString(10, 150, 240, 12, 12, "2016/1/6"); x++; if (x == 12) x = 0; LED0 = !LED0; delay_ms(1000); }}
���������������
���35510������������D/CX���������������������������������������������
- A18������������������������D/CX���������������������������������������
- A18������������������������D/CX���������������������������������������
SRAM���������
HAL_SRAM_Init
HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming) { if (hsram == NULL) { return HAL_ERROR; } if (hsram->State == HAL_SRAM_STATE_RESET) { hsram->Lock = HAL_UNLOCKED; #if USE_HAL_SRAM REGISTER_CALLBACKS if (hsram->MspInitCallback == NULL) { hsram->MspInitCallback = HAL_SRAM_MspInit; } hsram->DmaXferCpltCallback = HAL_SRAM_DMA_XferCpltCallback; hsram->DmaXferErrorCallback = HAL_SRAM_DMA_XferErrorCallback; hsram->MspInitCallback(hsram); #else HAL_SRAM_MspInit(hsram); #endif } FMC_NORSRAM_Init(hsram->Instance, &hsram->Init); FMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank); FMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank, hsram->Init.ExtendedMode); __FMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank); return HAL_OK;}
HAL_SRAM_MspInit
void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram) { __HAL_RCC_FMC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK.EnablePopup(); GPIO_InitTypeDef GPIO_Initure = {GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15}; GPIO_Initure.Mode = GPIO_MODE_AF_PP; GPIO_Initure.Pull = GPIO_PULLUP; GPIO_Initure.Speed = GPIO_SPEED_HIGH; GPIO_Initure.Alternate = GPIO_AF12_FMC; HAL_GPIO_Init(GPIOD, &GPIO_Initure); GPIO_Initure.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; HAL_GPIO_Init(GPIOE, &GPIO_Initure);}
������������
���������������������������������������LCD_ShowString
���������������������������������������������������
LCD_Fast_DrawPoint
������������������������������������������������������������������������������������������SRAM������������F429������MCU���������������������������������������������������������������������������HAL������������������������������������������
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月14日 16时31分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
2021-05-12
pair的用法
2021-05-12
SQL基本操作命令
2021-05-12
强制类型转换原理
2021-05-12
C# WinForm程序退出的方法
2021-05-12
ubuntu安装gem和fastlane
2021-05-12
onFailure unexpected end of stream
2021-05-12
android 集成weex
2021-05-12
【echarts】中国地图china.js 在线引用地址
2021-05-12
Flex 布局的自适应子项内容过长导致其被撑大问题
2021-05-12
PL/SQL 动态Sql拼接where条件
2021-05-12
Lua-table 一种更少访问的安全取值方式
2021-05-12
虚函数
2021-05-12
RTL设计- 多时钟域按顺序复位释放
2021-05-12
斐波那契数列两种算法的时间复杂度
2021-05-12
int main(int argc,char* argv[])详解
2021-05-12
【Android踩过的坑】7.Android Studio 点击启动项目时进入调试模式
2021-05-12
【Android小技巧】1.快速查看SDK对应的API Level
2021-05-12
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2021-05-12