|
__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下不用对齐,为什么? |
程序卡死在USB_EPStartXfer这里
SDIO 初始化 死在 __HAL_RCC_SDIO_CLK_ENABLE语句上
我现在使用STM32F446ZET6芯片,外挂了16m的片外SDRAM。想把程序在SDRAM中运行,一直尝试没有成功,希望得到帮助,是否有相关的例子或参考的文档
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
STM32F405rgt6 I2S DMA输入会造成卡死,这个芯片有BUG
USBX在F407上创建CDC不能正常使用
STM32F427ZGTx内部RTC秒及亚秒同步问题
有没有STM32F405RG参考设计
LSM6DS3TR-C静止情况下使用MotionFX固件算出的欧拉角周期性异常跳动
全球论坛无法登录
微信公众号
手机版
不是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 了?