STM32stm32 结构体体问题

查看: 1298|回复: 9
详细讲解LCD结构体地址以及地址线问题!
主题帖子精华
高级会员, 积分 538, 距离下一级还需 462 积分
在线时间52 小时
看了好多新手都会对LCD那个结构体的地址产生疑问,刚好闲着没事发个帖子详细讲解一下。以下图为例
4b20c5fb4a08db9.png (0 Bytes, 下载次数: 0)
22:54 上传
图中只画出了数据线与地址线 其他的线我没有花,请各位脑部一下,实在不行去看原子提供的LCD的原理图。
LCD有一个引脚是D/C引脚,用来区分往LCD中写入的数据是命令还是数据 Data/Command
比如说我要给LCD控制器的X寄存器写入数据Y 那么我需要先给LCD发送一个命令----X寄存器的地址,此时D/C引脚为低电平
然后再发送一个数据Y,此时D/C引脚为高电平。但是正常的FSMC总线中没有控制命令与数据的功能(或许我不知道)。
正常的FSMC是绝对地址寻址。也就是需要硬件地址线A0-AX(X为地址的长度)去控制。
所以STM32使用了一根地址线不是说往LCD控制的的某个地址写入数据。而是用这一根地址线去控制往LCD输入是命令还是数据。
那么是怎么控制的,咱们一点一点来分析。
首先数据手册上说&
00b14d3634edcf98d8e0c27b584eb64f_530.png (0 Bytes, 下载次数: 0)
22:54 上传
为什么16位的时候要右移1位?这是因为宽度为16位的时候每写入一个数据,即为两个字节,那么地址就应该加2.
所以这样的话,用FSMC配置为16位数据宽度时,每次设置地址都只改变了HADDR[25:1],那么就会保证地址为2的倍数,不会出现从半个数据宽度的地址处写入数据的情况。搞清楚这个然后再来看原子提供的LCD结构体
[C] 纯文本查看 复制代码typedef struct
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeD
#define LCD_BASE
((u32)(0x6C000000 | 0x0000007E))
#define LCD
((LCD_TypeDef *) LCD_BASE)
这段代码,结构体中包含两个双字节成员LCD_REG跟LCD_RAM;
大家都知道结构体中的地址是从上到下连续增加的。
结构体的地址即为LCD_REG的地址。那么LCD_RAM的地址将为LCD_REG地址加2,因为是u16,双字节类型。
FSMC使用了NOR/SRAM的 Bank1 sector4 那么根据数据手册可以得知NOR/SRAM的起始地址为0x
但是FSMC又把NOR这部分区域的地址分为了四块,在这使用的是第四块,所以HADDR[27 26] == 11
即27与26位为1,所以地址应该基地址应该为0x6C00 0000
然后再看地址线选用了A6当作LCD的D/C区分线,那么就应该是写入LCD_RAM时,第七位(还有A0嘛 这反应一下)应该为1。但是设置的数据宽度为16位,STM32会自动的右移1位,所以咱们需要反过来左移一位,那么就应该是b 把这个数减2就应该是
b 即为0x7E
那么0x6C00 0000 | 0x7E 这个地址将会是LCD结构体的首地址。&
[C] 纯文本查看 复制代码#define LCD_BASE
((u32)(0x6C000000 | 0x0000007E))
而这句话,将LCD_BASE代表这个地址数据
[C] 纯文本查看 复制代码#define LCD
((LCD_TypeDef *) LCD_BASE)
这句话将LCD定义为一个结构体指针,而这个结构体指针的地址为LCD_BASE
现在再反过来推一遍。
定义了这个结构体指针,第一个成员的地址为0x6C00 007E,第二个成员的地址为0x6C00 0080
把这两个数写成二进制格式
通过对比是不是看出来第8位从0变为了1,即为A7的电平状态,但是由于16位数据格式,要右移一位,所以就会成为A6的电平状态。
所以通过这个结构体对不同地址写入数据,就能控制是对LCD写入的是命令还是数据。
如果有说的不对的地方欢迎各位批评与指正!
主题帖子精华
高级会员, 积分 533, 距离下一级还需 467 积分
在线时间68 小时
说得好&顶起
主题帖子精华
在线时间275 小时
谢谢分享....
我的淘宝小店:
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间8 小时
讲的太好了,最缺的就是这种讲得清清楚楚的帖子了,真给力!
主题帖子精华
初级会员, 积分 79, 距离下一级还需 121 积分
在线时间20 小时
终于看明白这个7E是怎么来的了,新手就需要这种帖子,建议开发指南里加上这块,方便学习
主题帖子精华
初级会员, 积分 79, 距离下一级还需 121 积分
在线时间20 小时
正解,灰常感谢
主题帖子精华
新手上路, 积分 19, 距离下一级还需 31 积分
在线时间4 小时
讲的太好了,醍醐灌顶啊!
主题帖子精华
中级会员, 积分 442, 距离下一级还需 58 积分
在线时间39 小时
谢谢分享,先收藏了
主题帖子精华
初级会员, 积分 60, 距离下一级还需 140 积分
在线时间8 小时
正在学习这块,多谢讲解
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间10 小时
真的很感谢您!Thanks!
Powered bySTM32内部结构_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32内部结构
上传于||文档简介
&&S​T​M2​ ​内​部​结​构​图​ ​很​详​细​的
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢21ic官方微信
后使用快捷导航没有帐号?
查看: 2182|回复: 20
STM32的位段操作问题
&&已结帖(20)
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
各位大侠,
&&需要将一个8位的char型数据发送到8个IO口(PB区域4个,PG区域4个),用什么语句实现最快?
&&方法1:对8位数据各位判断是不是1,如果是1,则对相应的IO口置高电平,否则置低电平。
& &分析:这个操作貌似比较麻烦,需要位操作,然后判断比较,最后赋值。
&&方法2:查了下,C语言中有位段操作,即定义一个结构体,然后可对各位进行直接操作。
& &分析:这个耗时会不会短一些?
& & 我写了段代码如下,但语法有问题,对着谭浩强的书写的,自己实在看不出毛病来。有大侠能否看下:
& &typedef struct bus_data
& & & & unsigned int b0:1;
& & & & unsigned int b1:1;
& & & & unsigned int b2:1;
& & & & unsigned int b3:1;
& & & & unsigned int b4:1;
& & & & unsigned int b5:1;
& & & & unsigned int b6:1;
& & & & unsigned int b7:1;
& & & &&&sys_outdata.b0=0;//显示这句话有错误。
十分感谢!
满意回复+5
去掉typedef
typedef struct bus_data
unsigned int b0:1;
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
sys_outdata是类型
你这个不算位段操作,你看看汇编就知道了还是"与"的操作.
另外要用联合而不是结构.
主题帖子积分
资深工程师, 积分 10437, 距离下一级还需 9563 积分
资深工程师, 积分 10437, 距离下一级还需 9563 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
资深工程师, 积分 10437, 距离下一级还需 9563 积分
资深工程师, 积分 10437, 距离下一级还需 9563 积分
呵呵 不是很明白啊,我也看不出毛病,高手进!
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
自己顶一下。等待高手
主题帖子积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
亚历山大Y 发表于
自己顶一下。等待高手
结构体的初始化,不是这么初始化的吧
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
STM32初学者 发表于
结构体的初始化,不是这么初始化的吧
如何初始化?我看网上例子是如此,实际语法貌似没错。。。
主题帖子积分
高级技术员, 积分 957, 距离下一级还需 43 积分
高级技术员, 积分 957, 距离下一级还需 43 积分
主题帖子积分
专家等级:结帖率:96%
主题帖子积分
高级技术员, 积分 957, 距离下一级还需 43 积分
高级技术员, 积分 957, 距离下一级还需 43 积分
去掉typedef
主题帖子积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
& &typedef struct bus_data
& && &&&unsigned int b0:1;
& && &&&unsigned int b1:1;
& && &&&unsigned int b2:1;
& && &&&unsigned int b3:1;
& && &&&unsigned int b4:1;
& && &&&unsigned int b5:1;
& && &&&unsigned int b6:1;
& && &&&unsigned int b7:1;
sys_outdata&&是一个类型了,不是你定义的一个数据,现在sys_outdata 就相当于是int char short long float double 这些了。
typedef 是你自己重定义了一个类型。
C语言基础多看,如果还没看明白,那么举例吧。
类似这样的才是对的。
尝试了大侠的改法,还是报错啊。bus_data才是一个类吧。&
主题帖子积分
高级技术员, 积分 632, 距离下一级还需 368 积分
高级技术员, 积分 632, 距离下一级还需 368 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
高级技术员, 积分 632, 距离下一级还需 368 积分
高级技术员, 积分 632, 距离下一级还需 368 积分
sys_outdata是类型
主题帖子积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
助理工程师, 积分 1020, 距离下一级还需 980 积分
看谭的书,死的快,还不如问度娘呢
怎么说?谭是大师,还死得快?&
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
本帖最后由 huzi2099 于
00:44 编辑
你这个不算位段操作,你看看汇编就知道了还是&与&的操作.
另外要用联合而不是结构.
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
huzi2099 发表于
你这个不算位段操作,你看看汇编就知道了还是&与&的操作.
另外要用联合而不是结构. ...
大侠的意思是,这样的结构体不能提高执行效率,其本质不是真正的位操作?用联合体?能否提示下。
一直在找执行效率最高的这段代码。
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
菜鸟同学 发表于
typedef struct bus_data
& && &&&unsigned int b0:1;
多谢大侠,
bus_data是一个类吧,sys_outdata是这个类下面的一个变量。
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
ZhangStudy 发表于
sys_outdata是类型
sys_outdata是类型,那bus_data是什么?
主题帖子积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
助理工程师, 积分 1594, 距离下一级还需 406 积分
typedef 把
struct bus_data 转化为
怎么可能出错!你自己好好看看吧。
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
亚历山大Y 发表于
大侠的意思是,这样的结构体不能提高执行效率,其本质不是真正的位操作?用联合体?能否提示下。 ...
union,具体用法的你嗖嗖,不过这个也不行,因为它需要C编译器配合MCU特性.
真正能提高效率的是MCU位带特性,库里有例程你看看.
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
主题帖子积分
专家等级:结帖率:93%
主题帖子积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
助理工程师, 积分 1337, 距离下一级还需 663 积分
huzi2099 发表于
union,具体用法的你嗖嗖,不过这个也不行,因为它需要C编译器配合MCU特性.
真正能提高效率的是MCU位带特性, ...
多谢大侠,
&&位带操作对IO口倒是知道,对普通的变量也行?比如char型的?
主题帖子积分
实习生, 积分 16, 距离下一级还需 34 积分
实习生, 积分 16, 距离下一级还需 34 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 16, 距离下一级还需 34 积分
实习生, 积分 16, 距离下一级还需 34 积分
结构体的初始化错误了。试试struct bus_date{
& && &&&....//不变
struct sTime sys_outdata;
主题帖子积分
高级技术员, 积分 632, 距离下一级还需 368 积分
高级技术员, 积分 632, 距离下一级还需 368 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
高级技术员, 积分 632, 距离下一级还需 368 积分
高级技术员, 积分 632, 距离下一级还需 368 积分
亚历山大Y 发表于
sys_outdata是类型,那bus_data是什么?
bus_data 也是类型。
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
助理工程师, 积分 1313, 距离下一级还需 687 积分
亚历山大Y 发表于
多谢大侠,
&&位带操作对IO口倒是知道,对普通的变量也行?比如char型的? ...
可以的,你可以看看固件库里的例子
主题帖子积分
助理工程师, 积分 1385, 距离下一级还需 615 积分
助理工程师, 积分 1385, 距离下一级还需 615 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1385, 距离下一级还需 615 积分
助理工程师, 积分 1385, 距离下一级还需 615 积分
想用结构体位带,mdk有个扩展关键字,这种知识首先查mdk帮助文档,最有效也最权威
多谢大侠。扩展关键字大概是什么,能够提示下,我好查。&
只灌水,不技术
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
技术新星奖章
人才类勋章
沉静之湖泊
发帖类勋章
精英会员奖章
等级类勋章
时间类勋章
甘甜之泉水
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
希望之星奖章
等级类勋章
时间类勋章
涓涓之细流
发帖类勋章查看: 1300|回复: 9
详细讲解LCD结构体地址以及地址线问题!
主题帖子精华
高级会员, 积分 538, 距离下一级还需 462 积分
在线时间52 小时
看了好多新手都会对LCD那个结构体的地址产生疑问,刚好闲着没事发个帖子详细讲解一下。以下图为例
4b20c5fb4a08db9.png (0 Bytes, 下载次数: 0)
22:54 上传
图中只画出了数据线与地址线 其他的线我没有花,请各位脑部一下,实在不行去看原子提供的LCD的原理图。
LCD有一个引脚是D/C引脚,用来区分往LCD中写入的数据是命令还是数据 Data/Command
比如说我要给LCD控制器的X寄存器写入数据Y 那么我需要先给LCD发送一个命令----X寄存器的地址,此时D/C引脚为低电平
然后再发送一个数据Y,此时D/C引脚为高电平。但是正常的FSMC总线中没有控制命令与数据的功能(或许我不知道)。
正常的FSMC是绝对地址寻址。也就是需要硬件地址线A0-AX(X为地址的长度)去控制。
所以STM32使用了一根地址线不是说往LCD控制的的某个地址写入数据。而是用这一根地址线去控制往LCD输入是命令还是数据。
那么是怎么控制的,咱们一点一点来分析。
首先数据手册上说&
00b14d3634edcf98d8e0c27b584eb64f_530.png (0 Bytes, 下载次数: 0)
22:54 上传
为什么16位的时候要右移1位?这是因为宽度为16位的时候每写入一个数据,即为两个字节,那么地址就应该加2.
所以这样的话,用FSMC配置为16位数据宽度时,每次设置地址都只改变了HADDR[25:1],那么就会保证地址为2的倍数,不会出现从半个数据宽度的地址处写入数据的情况。搞清楚这个然后再来看原子提供的LCD结构体
[C] 纯文本查看 复制代码typedef struct
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeD
#define LCD_BASE
((u32)(0x6C000000 | 0x0000007E))
#define LCD
((LCD_TypeDef *) LCD_BASE)
这段代码,结构体中包含两个双字节成员LCD_REG跟LCD_RAM;
大家都知道结构体中的地址是从上到下连续增加的。
结构体的地址即为LCD_REG的地址。那么LCD_RAM的地址将为LCD_REG地址加2,因为是u16,双字节类型。
FSMC使用了NOR/SRAM的 Bank1 sector4 那么根据数据手册可以得知NOR/SRAM的起始地址为0x
但是FSMC又把NOR这部分区域的地址分为了四块,在这使用的是第四块,所以HADDR[27 26] == 11
即27与26位为1,所以地址应该基地址应该为0x6C00 0000
然后再看地址线选用了A6当作LCD的D/C区分线,那么就应该是写入LCD_RAM时,第七位(还有A0嘛 这反应一下)应该为1。但是设置的数据宽度为16位,STM32会自动的右移1位,所以咱们需要反过来左移一位,那么就应该是b 把这个数减2就应该是
b 即为0x7E
那么0x6C00 0000 | 0x7E 这个地址将会是LCD结构体的首地址。&
[C] 纯文本查看 复制代码#define LCD_BASE
((u32)(0x6C000000 | 0x0000007E))
而这句话,将LCD_BASE代表这个地址数据
[C] 纯文本查看 复制代码#define LCD
((LCD_TypeDef *) LCD_BASE)
这句话将LCD定义为一个结构体指针,而这个结构体指针的地址为LCD_BASE
现在再反过来推一遍。
定义了这个结构体指针,第一个成员的地址为0x6C00 007E,第二个成员的地址为0x6C00 0080
把这两个数写成二进制格式
通过对比是不是看出来第8位从0变为了1,即为A7的电平状态,但是由于16位数据格式,要右移一位,所以就会成为A6的电平状态。
所以通过这个结构体对不同地址写入数据,就能控制是对LCD写入的是命令还是数据。
如果有说的不对的地方欢迎各位批评与指正!
主题帖子精华
高级会员, 积分 533, 距离下一级还需 467 积分
在线时间68 小时
说得好&顶起
主题帖子精华
在线时间275 小时
谢谢分享....
我的淘宝小店:
主题帖子精华
新手上路, 积分 40, 距离下一级还需 10 积分
在线时间8 小时
讲的太好了,最缺的就是这种讲得清清楚楚的帖子了,真给力!
主题帖子精华
初级会员, 积分 79, 距离下一级还需 121 积分
在线时间20 小时
终于看明白这个7E是怎么来的了,新手就需要这种帖子,建议开发指南里加上这块,方便学习
主题帖子精华
初级会员, 积分 79, 距离下一级还需 121 积分
在线时间20 小时
正解,灰常感谢
主题帖子精华
新手上路, 积分 19, 距离下一级还需 31 积分
在线时间4 小时
讲的太好了,醍醐灌顶啊!
主题帖子精华
中级会员, 积分 442, 距离下一级还需 58 积分
在线时间39 小时
谢谢分享,先收藏了
主题帖子精华
初级会员, 积分 60, 距离下一级还需 140 积分
在线时间8 小时
正在学习这块,多谢讲解
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间10 小时
真的很感谢您!Thanks!
Powered by有没有用stm32的,这个芯片的语言很不习惯&&&前两天开始学stm32,看着例程,里面大量结构体导致各种不适,有没有高手能指条明路,急求有人能指点!掌握方法就好
回答1:不就是c嘛&有啥问题呢
看不懂说明你道行不够&需继续修炼
回答2:stm32的库文件支持是相当好的了,基本上把所有底层的东西都封装了一下,用起来是比较方便的
如果你觉得不好用,只是你还没有习惯它而已
用个智能一些的编辑软件,在编程的时候,只需要写出结构体的前几个字母,编辑器会自动把后面的字符提示出来,把结构体的成员也可以提示出来,这样会方便很多。
hnxiaoyu123
回答3:用库函数做开发,简单容易上手,有点51单片机开发经验的人,稍微看一下就会了。
基本思路:
#inlcud"stm32f10x.h"
int&main(void)
&&&RCC_Init();//初始化系统时钟
&&&&GPIO_Init();//初始化用到的IO引脚
&&&&...//其他硬件设备
&&&while(1)
&&&&&&//功能模块函数1
&&&&&&//功能模块函数2
1.用到的头文件添加到工程里面,如stm32f10x_rtc.c、stm32f10x_gpio.c等
2.用到的系统函数的头文件在stm32f10x_conf.h打开
3.中断函数在stm32f10x_it.c文件中添加
4.可以去st的官网上下点例子看看,不过初学还是建议买个开发板,把里面的例程都自己试着
写一遍就基本差不多了
hnxinnuokj
回答4:这个是因为C语言基础不过关,尤其是使用指针不熟练。跟STM32关系不大。
大量使用指向数据结构甚至指向函数的指针有助于更好地实现模块化设计,让静止不变的库服务于千变万化的用户代码。如果说它牺牲了一些可读性,也是针对最初上手的阶段而言。因为在你用熟之后,那些库函数涉及到的数据结构和指针都是信手拈来,不用细想就知道是什么东西。
在熟悉阶段尽量使用SlickEdit或者SourceInsight这类带有语法高亮和追踪功能的专业编辑器去编辑你的工程,你会发现引用来引用去其实也不过是那些东西。慢慢的你自己写代码都会使用类似的风格,这样相对更容易维护一些。
hnxiaoyu123
回答5:这个芯片功能比较强大,可查的资料多,软件平台的封装也很规范,值得学习,多练练就熟悉了
hnx1144521
回答6:楼主还是具体些才好,不过感觉楼主是arm的初学者
hnxiaohuo6677
回答7:楼主,你需要的是这个
“STM32固件库使用手册”
“STM32中文用户参考手册”
回答8:如果入门看资料都看得痛苦,要么是LZ自己的问题,没好好看,没耐心。要么是资料选得太难了,那好说,换简单的呗。要注意,初学最重要的是要培养信心,不要想一上来就想搞定什么大难题,可以立个很难的目标,但行动起来要注意细化目标,分化问题,稳打稳扎的一定能搞定。

我要回帖

更多关于 stm32 结构体对齐 的文章

 

随机推荐