Вот хидер на 407 камень
вот первое попавшиеся ...
Код
typedef struct
{
__IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */
__IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */
__IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */
__IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */
__IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */
__IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */
__IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */
__IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */
uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */
CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */
CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */
uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */
__IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */
__IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */
uint32_t RESERVED2; /*!< Reserved, 0x208 */
__IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */
uint32_t RESERVED3; /*!< Reserved, 0x210 */
__IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */
uint32_t RESERVED4; /*!< Reserved, 0x218 */
__IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */
uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */
CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */
} CAN_TypeDef;
Ну и далее по тексту для любителей якобы CMSIS
Код
/*!<CAN control and status registers */
/******************* Bit definition for CAN_MCR register ********************/
#define CAN_MCR_INRQ ((uint32_t)0x00000001) /*!<Initialization Request */
#define CAN_MCR_SLEEP ((uint32_t)0x00000002) /*!<Sleep Mode Request */
#define CAN_MCR_TXFP ((uint32_t)0x00000004) /*!<Transmit FIFO Priority */
#define CAN_MCR_RFLM ((uint32_t)0x00000008) /*!<Receive FIFO Locked Mode */
#define CAN_MCR_NART ((uint32_t)0x00000010) /*!<No Automatic Retransmission */
#define CAN_MCR_AWUM ((uint32_t)0x00000020) /*!<Automatic Wakeup Mode */
#define CAN_MCR_ABOM ((uint32_t)0x00000040) /*!<Automatic Bus-Off Management */
#define CAN_MCR_TTCM ((uint32_t)0x00000080) /*!<Time Triggered Communication Mode */
#define CAN_MCR_RESET ((uint32_t)0x00008000) /*!<bxCAN software master reset */
#define CAN_MCR_DBF ((uint32_t)0x00010000) /*!<bxCAN Debug freeze */
/******************* Bit definition for CAN_MSR register ********************/
#define CAN_MSR_INAK ((uint32_t)0x0001) /*!<Initialization Acknowledge */
#define CAN_MSR_SLAK ((uint32_t)0x0002) /*!<Sleep Acknowledge */
#define CAN_MSR_ERRI ((uint32_t)0x0004) /*!<Error Interrupt */
#define CAN_MSR_WKUI ((uint32_t)0x0008) /*!<Wakeup Interrupt */
#define CAN_MSR_SLAKI ((uint32_t)0x0010) /*!<Sleep Acknowledge Interrupt */
#define CAN_MSR_TXM ((uint32_t)0x0100) /*!<Transmit Mode */
#define CAN_MSR_RXM ((uint32_t)0x0200) /*!<Receive Mode */
#define CAN_MSR_SAMP ((uint32_t)0x0400) /*!<Last Sample Point */
#define CAN_MSR_RX ((uint32_t)0x0800) /*!<CAN Rx Signal */
Ну и так далее ....
Обращаю внимание, что в битовой маске сразу указаны и устройство и регистры...