OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6259|回复: 8

新手求助,关于写命令和写寄存器函数的基本理解

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-1-1
在线时间
0 小时
发表于 2015-4-7 10:36:09 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void LCD_WR_REG(u16 regval) { LCD->LCD_REG=regval;//写入要写的寄存器序号 } //写LCD数据 //data:要写入的值 void LCD_WR_DATA(u16 data) { LCD->LCD_RAM=data; } //读LCD数据 //返回值:读到的值 u16 LCD_RD_DATA(void) { return LCD->LCD_RAM; } //写寄存器 //LCD_Reg:寄存器地址 //LCD_RegValue:要写入的数据 void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue) { LCD->LCD_REG = LCD_Reg; //写入要写的寄存器序号 LCD->LCD_RAM = LCD_RegValue;//写入数据 } //读寄存器[/mw_shl_code]
上面的LCD_WR_REG()和LCD_WriteReg()函数有什么区别,第一个函数是指写命令吗?9341IC的命令端口地址都是一样的吗?为什么所有命令都往同一个地址LCD->LCD_REG里写,写命令不也是相当于写入一个寄存器的值吗?写数据为什么也往同一个地址里写,地址是如何变化的?麻烦解释一下,C语言这一块学的不是很熟

最佳答案

查看完整内容[请看2#楼]

LCD_WR_REG仅仅是写寄存器的编号,就是一个单独的函数。你可以写不同的寄存器地址。 寄存器对应的值,都是通过LCD_WR_DATA来给出的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-7 10:36:10 | 显示全部楼层
LCD_WR_REG仅仅是写寄存器的编号,就是一个单独的函数。你可以写不同的寄存器地址。
寄存器对应的值,都是通过LCD_WR_DATA来给出的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-4-7 11:03:37 | 显示全部楼层
lcd_writereg()和lcd_wr_reg()的区别就是多了句往寄存器的序号写入数据,你注意下其实他们不是往同一个地址写的,一个是lcd->lcd_reg,另外一个是lcd->lcd_ram.
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-1-1
在线时间
0 小时
 楼主| 发表于 2015-4-7 12:40:32 | 显示全部楼层
回复【2楼】FantaSy_:
---------------------------------
回复【2楼】FantaSy_:
---------------------------------
这个我知道,一个写命令,一个写数据,就是不太理解往寄存器中单独写命令也就是你说的写序号有什么意义呢,还有这样写序号的地址为什么都是同一个地址?好吧 可能不太理解 问题都不知道怎么提了
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-1-1
在线时间
0 小时
 楼主| 发表于 2015-4-8 13:38:37 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
这两天在上课,,感谢回答  我就想知道LCD_WR_REG这个单独的函数仅仅写寄存器的编号有什么意义呢? 自己再好好研究一下吧~~~
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-9-23
在线时间
0 小时
发表于 2015-6-13 19:43:25 | 显示全部楼层
void LCD_WR_REG(u16 regval)
{
    LCD->LCD_REG=regval;//写入要写的寄存器序号 
}
这个函数仅仅是写寄存器的编号,即要进行什么操作在之后说明;
void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue)
{  
    LCD->LCD_REG = LCD_Reg;      //写入要写的寄存器序号    
LCD->LCD_RAM = LCD_RegValue;//写入数据
}
这个函数呢,显然就比上一个实现的功能多一点,不仅说明要对哪一个寄存器进行操作,而且说明操作类型就是向里面写入一个数据,就是入口参数LCD_RegValue
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-5-23
在线时间
0 小时
发表于 2015-9-24 19:11:31 | 显示全部楼层
回复【5楼】青春的墓志铭:
---------------------------------
你好我现在也遇到这个问题,想请问这个寄存器的序号是如何理解和得知呢?这些寄存器又是指哪么?fsmc的还是什么的
回复

使用道具 举报

15

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-9-22
在线时间
26 小时
发表于 2016-9-22 10:27:04 | 显示全部楼层
我感觉正点原子把重点要讲解的内容都给忽略了   这点要加强
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2020-2-22
在线时间
16 小时
发表于 2020-7-9 11:45:00 | 显示全部楼层
liyongfeihit 发表于 2015-6-13 19:43
void LCD_WR_REG(u16 regval)
{
    LCD->LCD_REG=regval;//写入要写的寄 ...

这个函数仅仅是写寄存器的编号,即要进行什么操作在之后说明;
能举个例子吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 15:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表