高级会员

- 积分
- 560
- 金钱
- 560
- 注册时间
- 2016-4-12
- 在线时间
- 230 小时
|
7#

楼主 |
发表于 2018-10-31 08:52:36
|
只看该作者
自己给自己回答下吧,CAN寄存器有定义,但是定义的很奇怪,如图一,然后我采用了直接移植函数库中的stm8s.h文件,这样也可以使用寄存器了,就和STM32的方法一样。然而为什么原始的头文件中没有全部的寄存器,我也不解,我自己的理解是,需要自己再添加一些寄存器才可以用,有明白的大神望告知下。附上原始寄存器定义和stm8s.h寄存器的定义。
以下代码是stm8s.h头文件中的寄存器定义。
typedef struct
{
__IO uint8_t MCR; /*!< CAN master control register */
__IO uint8_t MSR; /*!< CAN master status register */
__IO uint8_t TSR; /*!< CAN transmit status register */
__IO uint8_t TPR; /*!< CAN transmit priority register */
__IO uint8_t RFR; /*!< CAN receive FIFO register */
__IO uint8_t IER; /*!< CAN interrupt enable register */
__IO uint8_t DGR; /*!< CAN diagnosis register */
__IO uint8_t PSR; /*!< CAN page selection register */
union
{
struct
{
__IO uint8_t MCSR;
__IO uint8_t MDLCR;
__IO uint8_t MIDR1;
__IO uint8_t MIDR2;
__IO uint8_t MIDR3;
__IO uint8_t MIDR4;
__IO uint8_t MDAR1;
__IO uint8_t MDAR2;
__IO uint8_t MDAR3;
__IO uint8_t MDAR4;
__IO uint8_t MDAR5;
__IO uint8_t MDAR6;
__IO uint8_t MDAR7;
__IO uint8_t MDAR8;
__IO uint8_t MTSRL;
__IO uint8_t MTSRH;
}TxMailbox;
struct
{
__IO uint8_t FR01;
__IO uint8_t FR02;
__IO uint8_t FR03;
__IO uint8_t FR04;
__IO uint8_t FR05;
__IO uint8_t FR06;
__IO uint8_t FR07;
__IO uint8_t FR08;
__IO uint8_t FR09;
__IO uint8_t FR10;
__IO uint8_t FR11;
__IO uint8_t FR12;
__IO uint8_t FR13;
__IO uint8_t FR14;
__IO uint8_t FR15;
__IO uint8_t FR16;
}Filter;
struct
{
__IO uint8_t F0R1;
__IO uint8_t F0R2;
__IO uint8_t F0R3;
__IO uint8_t F0R4;
__IO uint8_t F0R5;
__IO uint8_t F0R6;
__IO uint8_t F0R7;
__IO uint8_t F0R8;
__IO uint8_t F1R1;
__IO uint8_t F1R2;
__IO uint8_t F1R3;
__IO uint8_t F1R4;
__IO uint8_t F1R5;
__IO uint8_t F1R6;
__IO uint8_t F1R7;
__IO uint8_t F1R8;
}Filter01;
struct
{
__IO uint8_t F2R1;
__IO uint8_t F2R2;
__IO uint8_t F2R3;
__IO uint8_t F2R4;
__IO uint8_t F2R5;
__IO uint8_t F2R6;
__IO uint8_t F2R7;
__IO uint8_t F2R8;
__IO uint8_t F3R1;
__IO uint8_t F3R2;
__IO uint8_t F3R3;
__IO uint8_t F3R4;
__IO uint8_t F3R5;
__IO uint8_t F3R6;
__IO uint8_t F3R7;
__IO uint8_t F3R8;
}Filter23;
struct
{
__IO uint8_t F4R1;
__IO uint8_t F4R2;
__IO uint8_t F4R3;
__IO uint8_t F4R4;
__IO uint8_t F4R5;
__IO uint8_t F4R6;
__IO uint8_t F4R7;
__IO uint8_t F4R8;
__IO uint8_t F5R1;
__IO uint8_t F5R2;
__IO uint8_t F5R3;
__IO uint8_t F5R4;
__IO uint8_t F5R5;
__IO uint8_t F5R6;
__IO uint8_t F5R7;
__IO uint8_t F5R8;
} Filter45;
struct
{
__IO uint8_t ESR;
__IO uint8_t EIER;
__IO uint8_t TECR;
__IO uint8_t RECR;
__IO uint8_t BTR1;
__IO uint8_t BTR2;
uint8_t Reserved1[2];
__IO uint8_t FMR1;
__IO uint8_t FMR2;
__IO uint8_t FCR1;
__IO uint8_t FCR2;
__IO uint8_t FCR3;
uint8_t Reserved2[3];
}Config;
struct
{
__IO uint8_t MFMI;
__IO uint8_t MDLCR;
__IO uint8_t MIDR1;
__IO uint8_t MIDR2;
__IO uint8_t MIDR3;
__IO uint8_t MIDR4;
__IO uint8_t MDAR1;
__IO uint8_t MDAR2;
__IO uint8_t MDAR3;
__IO uint8_t MDAR4;
__IO uint8_t MDAR5;
__IO uint8_t MDAR6;
__IO uint8_t MDAR7;
__IO uint8_t MDAR8;
__IO uint8_t MTSRL;
__IO uint8_t MTSRH;
}RxFIFO;
}Page;
} CAN_TypeDef;
|
|