ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
1303752 Топик полностью
LightElf (24.04.2023 16:20, просмотров: 154) ответил Zoro на Чего то я не вкуриваю... Нафига проверять то что реализуется прямо "из коробки" и при этом с гарантией?! Если нужна "утрамбованная структура" - то применяется соответствующая прагма. Если не требуется упаковывание структуры то не используется прагма. Зачем козе баян ?!
Структуры могут быть разные, в том числе заданные извне, всячески запутанные. Полезно быть уверенным, что смена компилятора не поломала всякое. 
/** 
* @brief TIMER
*/
typedef struct
{
union {
__IO uint32_t CR;
struct {
__IO uint8_t CTRL_MOD; /*!< Timer Mode Setting Register, Address offset: 0x00 */
__IO uint8_t CTRL_DMA; /*!< DMA Control Register, Address offset: 0x01 */
__IO uint8_t INTER_EN; /*!< Interrupt Enable Register, Address offset: 0x02 */
__IO uint8_t RSVD_03;
};
};
union {
__IO uint32_t SR;
struct {
__IO uint8_t RSVD_04;
__IO uint8_t RSVD_05;
__IO uint8_t INT_FLAG; /*!< Interrupt Status Register, Address offset: 0x06 */
__IO uint8_t FIFO_COUNT; /*!< FIFO Count Register, Address offset: 0x07 */
};
};
union {
__IO uint32_t CNT;
__IO uint32_t COUNT; /*!< Current Counter Register, Address offset: 0x08 */
};
union {
__IO uint32_t TOP;
__IO uint32_t CNT_END; /*!< Counting End Register, Address offset: 0x0C */
};
__IO uint32_t FIFO; /*!< FIFO Data Register, Address offset: 0x10 */
union {
__IO uint32_t DMAPTR;
struct {
__IO uint16_t DMA_NOW; /*!< DMA Current Buffer Register, Address offset: 0x14 */
__IO uint16_t RSVD_16;
};
};
union {
__IO uint32_t DMASTART;
struct {
__IO uint16_t DMA_BEG; /*!< DMA Start Buffer Register, Address offset: 0x18 */
__IO uint16_t RSVD_1A;
};
};
union {
__IO uint32_t DMAEND;
struct {
__IO uint16_t DMA_END; /*!< DMA End Buffer Register, Address offset: 0x1C */
__IO uint16_t RSVD_1E;
};
};
} TMR_Type;
/* Check correct structure packing */
STATIC_ASSERT((sizeof(TMR_Type) == 0x20), TMR_Type);
Не надо делать мне как лучше, оставьте мне как хорошо