发动态
综合 最新发布 最新回复
图文
列表
打卡 #嘉立创SMT私有库节5月15至16日全场满减满赠#
硬创社
#DIY设计# #嘉立创PCB# 今日份学习进度,继续感谢EDA不卡(虽然保存的时候已经有点卡了)不知道立创元器件的引脚是参考什么摆的,默认引脚排序烂七八糟的,大部分时间都花在改引脚图上了[晕]
嘉立创PCB
物联网的万车互联很有必要
1、目前的辅助感知算法水平还有很大的进步空间,通过摄像头、雷达等识别方式限制性实在是较大,在高速上偶尔来个刹车也是非常要命的。 所以结合无线通信、卫星等组合式的辅助驾驶,实现汽车之间的互联与信息共享变得非常有意义了,一旦前车出现重大异常便可以最早的提醒后车进行避让,大幅度降低事故损失。 2、人机交互目前还停留在XX同学的智能语音交互系统,听听歌、导导航等等,这多多少少还是低端了点。 #畅聊专区# 醉驾、病驾、疲劳驾驶等识别基本都没有部署。
开源硬件平台
最近移植了一些开源组件,发现较多的语法跟编译器相关,如果没有跨平台处理,确实大大降低了程序的可移植性,其中尤为突出的就是结构体字节对齐属性的标识,通常编译器采用默认字节对齐方式,按照处理器架构的要求来决定的。比如如下结构体在stm32中默认为4字节对齐: typedef struct _tag_Test1 { uint8_t member1; uint16_t member2; }sTest1; stSize = sizeof(sTest1); 自然sizeof获得的结构体大小也是4。然而默认对齐方式有时候并不满足我们编程的需求,比如需要降低一些内存占用,或者提高相关数据的访问效率等等,我们会手动的声明相关变量的对齐方式。那么这里总结了下AC5编译器进行字节对齐的几种方式:1、#pragmapack#pragma pack 是一个编译指令,用于指定结构体、联合体和类成员的字节对齐方式。在 Keil uVision5 中,可以使用 #pragma pack 指令来设置字节对齐方式。一般我们用如下方式标识#pragma pack(n)其中,n 是对齐系数,表示按照 n 字节对齐。常见的对齐系数包括 1、2、4、8 等。例如,若要将对齐系数设置为 4,比如:#pragma pack(4),该指令通常放置在结构体、联合体或类的定义之前,以影响其后的所有定义,这里尤其需要注意,很多时候忘记恢复字节对齐导致了一些没必要的问题。这样一来,所有在 #pragma pack 后声明的结构体、联合体或类成员都将按照指定的字节对齐方式进行排列。那么如果我们需要取消则需要采用#pragmapack()来取消结构体对齐。#pragma pack (1) typedef struct _tag_Test2 { uint8_t member1; uint16_t member2; }sTest2; #pragma pack () // 取消结构体对齐 stSize = sizeof(sTest2); 通过这样的定义,使得sTest2结构体整体大小只占用3个字节在,这种方式在MDK中比较常用。当然有经验的朋友该说了,我用#pragma pack(push,n)比较多,没错,该语法也同样是可以的,比如例子: //#pragmapack(1)#pragma pack(push,1) typedef struct _tag_Test2 { uint8_t member1; uint16_t member2; }sTest2; //#pragmapack()//取消结构体对齐#pragma pack(pop) stSize = sizeof(sTest2); 既然都聊到这个份上了,该谈谈他们的差异了:#pragmapack(n)和#pragma pack(push, n) 其实在功能上没太大的区别,仅仅只是在使用方面略有不同。#pragma pack(n):这个指令直接设置当前字节对齐系数为 n。这意味着在此指令之后声明的结构体、联合体或类成员都将按照指定的字节对齐方式进行排列。每次使用 #pragma pack(n) 时,都会覆盖之前的对齐设置,因此它可能会影响后续的代码。没有保存当前的对齐方式,因此在使用完之后,如果需要还原到先前的对齐方式,就需要手动重新设置。#pragma pack(push, n):这个指令其实也是设置当前字节对齐系数为 n。但是它还有一个功能,就是将当前的对齐方式保存到编译器的栈中。这意味着,使用 #pragma pack(push, n) 后,可以在代码的后续部分使用 #pragma pack(pop) 来恢复之前保存的对齐方式,而不会受到之后代码中 #pragmapack指令的影响。因此,#pragma pack(push, n) 更灵活,可以避免在代码的后续部分不小心修改了对齐方式而导致错误。2、__attribute__((__packed__))__attribute__((__packed__)) 是 GCC 和一些兼容 GCC 的编译器(如 Clang)提供的一个特性,用于指示编译器以紧凑的方式存储结构体或类,即取消对齐。使用案例如下: typedef struct __attribute__ ((__packed__)) _tag_Test3 { uint8_t member1; uint16_t member2; }sTest3; stSize = sizeof(sTest3); 那么最终结构体的大小也将是3个字节。3、干脆的__packed相信有经验的各位都比较喜欢使用这个属性吧: typedef __packed struct _tag_Test4 { uint8_t member1; uint16_t member2; }sTest4; ; stSize = sizeof(sTest4); __packed 是一种特性,指示编译器取消对其成员的自然对齐。它的作用类似于 __attribute__((__packed__)),但是它更加与平台无关,因为它是一种更通用的约定,不依赖于特定编译器。虽然说__packed 是一种常见的约定,但它并非标准 C 语言的一部分,因此在不同的编译器和平台上可能具有不同的行为,使用时应谨慎考虑平台兼容性和性能问题。
Keil中三种手动结构体对齐方式,别用错了~
立创开发板
我*ST Link怎么这么坏啊[我想静静]板子画好烧录到一半就发现没反应了,测试一切正常,换了两次芯片都是这样,然后发现ST Link的LDO烧了,5V直接灌到3V3了,但是ST Link里面那颗stm32居然没事[尴尬]烧了我3颗GD32啊啊啊... #嘉立创SMT私有库节5月15至16日全场满减满赠# #DIY设计# #创享2025#
开源硬件平台
QC工序这么久正常吗?
之前下经济型 SMT 时 QC 一般在上一步完成 1~2 个小时后就能够完成,这次卡了 2 天,之后下的另外一单都已经发货了[我想静静]
嘉立创SMT
DC-DC LED驱动 这个电路的设计用意 能分析出来不 图片部分 设计上有没有问题?
立创商城
请问PCB上开槽,距离走线最小间距是多少?我附上了AD的截图,还有PCB效果图
嘉立创PCB
为什么蓝牙模块连接上STM32疯狂给手机发F,32的程序和接线都确认没问题,而且蓝牙模块直接接上CH340,用手机和电脑串口助手互发数据都是正常的
7次播放
硬创社
BUCK、BOOST、BUCK-BOOST电路中的升压/降压/升降压电感,感值大容易过EMI还是感值小好过?假设开关频率100K
立创商城
协议负载有昂盛达、POWER-Z、贝奇电子等几家的,都适合用来测试PD电源,只是价格都很贵。有没有几百块钱以内的协议负载推荐?哪怕一个通道也可以,模块也可以,有PD检测功能,要能满足28V5A的测试
立创商城
2.6.14加载超慢,卡死,只能退回2.5.4
嘉立创DFM
【星火会3.0硬核剧透】嘉立创邀300位开源极客聚会聚餐!
诚邀热爱开源硬件的创客们前来深圳聚会聚餐[庆祝] ✅ 10场围绕“开源硬件、国产EDA、国产开发板”的主题报告! ✅ 从星火到燎原,现场见证星火计划选手们的高光时刻! 多家知名原厂&个人优秀创作者现场摆展 ✅ 嘉立创新书籍首发 ✅ 免费参会,还提供自助午餐! ....... 超多精彩,就在5月24日,等你来玩! 报名链接:https://mp.weixin.qq.com/s/nuVS6kLh44a7OtfYKrtKYg
开源硬件平台
#DIY设计# #嘉立创PCB# RP2350A最小核心模块开源了,欢迎复刻交流 https://oshwhub.com/lmy0312/pico2-rp2350a-stamp-hole-module
开源硬件平台
会一点硬件,会画板,不会软件和结构怎么办?
硬创社
社区数据
今日帖子
-
今日互动量
-
在线人数
-
帖子总量
-
用户总量
-
推荐话题 换一批
#嘉立创SMT私有库节5月15至16日全场满减满赠#
#DIY设计#
#创享2025#
#嘉立创PCB#
#畅聊专区#
#嘉立创免费3D打印#
#嘉立创3D免费打样券#
#3D免费打印#
查看更多热门话题
功能讨论
()
主题
打赏记录
粤公网安备44030002004666号 · 粤ICP备2023121300号 · 用户协议 · 隐私政策 · 侵权举报 · ISO/IEC · Copyright © 2024 嘉立创社区版权所有
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区