帮我改正FSMC_Bank1_NORSRAM4 #define LCD_REG ((uint32_t)0x60000000)
时间: 2023-11-23 09:06:50 浏览: 91
你的定义有误,应该改为:
```
#define FSMC_Bank1_NORSRAM1 ((uint32_t)0x00000000)
#define FSMC_Bank1_NORSRAM2 ((uint32_t)0x00000002)
#define FSMC_Bank1_NORSRAM3 ((uint32_t)0x00000004)
#define FSMC_Bank1_NORSRAM4 ((uint32_t)0x00000006)
#define LCD_REG ((uint32_t)FSMC_Bank1_NORSRAM1) // FSMC Bank1 NOR/SRAM1 地址
```
因为 FSMC_Bank1_NORSRAM1 对应 Bank1 的 NOR Flash 或 SRAM1,而 FSMC_Bank1_NORSRAM4 对应 Bank1 的 SRAM4。所以你需要将 LCD_REG 的定义改为 FSMC_Bank1_NORSRAM1。
相关问题
设置一个宏定义 对应stm32f1外设FSMC_Bank1_NORSRAM4
可以使用以下代码定义宏:
```
#define FSMC_BANK1_NORSRAM4 ((uint32_t)0x00000006)
```
其中,`FSMC_BANK1_NORSRAM4` 对应的是 STM32F1 外设 FSMC_Bank1_NORSRAM4 的地址偏移量,为 `0x00000006`。
STM32F407 FSMC TFT LCD 屏幕
### 配置和编程示例
#### STM32F407 FSMC 接口配置 TFT LCD 屏幕
STM32 的 FSMC(Flexible Static Memory Controller)可以用于连接多种外部设备,其中包括 TFT LCD 显示屏。对于 VT56030-A03 型号显示屏,其内置 RA8875 控制器支持 MPU 接口:8080/6800 以及 8/16 位总线模式,在此情况下选择了 FSMC 来模拟 8080 总线时序实现通信[^2]。
为了使能 FSMC 并将其设置为与 TFT LCD 进行交互的方式之一,需按照如下方法操作:
- **初始化硬件资源**
确保启用了必要的时钟门控并设置了 GPIO 引脚功能作为 FSMC 使用。这通常涉及到修改 RCC 和 GPIO 寄存器来分配特定引脚给 FSMC 功能。
- **定义显示参数宏指令**
```c
#define LCD_W 320 // 定义LCD宽度
#define LCD_H 480 // 定义LCD高度
#define LCD_ADDR_BASE 0x60000000 // 设置FSMC基地址
#define LCD_REGSELECT_BIT 16 // RS信号对应的位数
```
这些常量帮助简化后续代码编写过程中的坐标计算和其他相关逻辑处理[^3]。
- **配置 FSMC 参数**
针对所使用的具体型号调整 NORSRAM 初始化结构体成员变量值,比如 Bank、DataAddressMux、MemoryType 等属性;同时也要注意 DataWidth 应该匹配目标显示器的数据总线宽度(这里假设是 8-bit 或者 16-bit),另外还需要指定正确的读写等待周期以适应不同类型的存储器件特性需求。
- **建立物理内存映射关系**
通过上述提到的 `LCD_ADDR_DATA` 及 `LCD_ADDR_REG` 符号创建指向实际 RAM 地址空间内的指针对象以便于访问命令寄存器或传输图像像素信息到缓冲区中去。
下面给出一段简单的 C 函数用来填充矩形区域颜色的例子:
```c
void lcd_fill_array(uint16_t x_start, uint16_t y_start, uint16_t x_end, uint16_t y_end, const void* pcolor){
volatile uint16_t *data_ptr;
data_ptr = (volatile uint16_t *)LCD_ADDR_DATA;
/* 计算起始位置 */
int offset = ((y_start * LCD_W) + x_start);
for(int row=y_start;row<y_end;++row){
for(int col=x_start;col<x_end;++col){
*(data_ptr+(offset++))=*((uint16_t*)pcolor);
}
}
}
```
这段函数接收四个边界坐标加上一个表示颜色值的指针参数,并利用循环迭代方式向指定范围内连续写入相同色彩内容完成绘制工作。
阅读全文
相关推荐
















