|
__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END = { /* 18 */ 0x09, /* bLength: HID Descriptor size */ HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */ 0x11, /* bcdHID: HID Class Spec release number */ 0x01, 0x00, /* bCountryCode: Hardware target country */ 0x01, /* bNumDescriptors: Number of HID class descriptors to follow */ 0x22, /* bDescriptorType */ HID_MOUSE_REPORT_DESC_SIZE, /* wItemLength: Total length of Report descriptor */ 0x00, }; 查看__ALIGN_BEGIN定义是在ARM,GNUC编译环境下是4字节对齐,但在IAR下不用对齐,为什么? |
F407的SDIO的硬件分流问题
workbench5.3.1生成代码问题
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
STLink下载程序失败,Flash部分地址不能写入
求助,局部变量初始化时未赋值会导致什么后果?
TIM11,TIM13失效
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
如何为ram变量分配固定地址
ST TOF问题请教
微信公众号
手机版
不是IAR环境下就要这个对齐,只是换了个写法而已。
在IAR里面使用的#pragma 语句来指定对齐方式的。
不是IAR环境下不要这个对齐,只是换了个写法而已。
在IAR里面使用的#pragma 语句来指定对齐方式的。
跳到这个关键字定义的地方确实没有对IAR下进行对齐,usb_hid.c文件你可以看一下
不妨自己加上 #pragma data_alignment=4 来满足USB DMA传输时字对齐。
以这里的USB应用为例,库函数里有专门提醒:
Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead.
嗯,我知道IAR下对齐要加这个关键字,我拷贝的这个定义是ST提供的USB Middlewares里的固件,这算不算是个bug 了?