关于STM8寄存器定义在哪个头文件中?

2019-07-19 20:23发布

如题,最近在写CAN总线的收发功能,在设置STM8的CAN总线寄存器的时候,发现找不到相应的寄存器了,如下图所示,然后我查阅了iostm8af52a8.h文件中,发现只定义了部分寄存器,其他的我没找到,找不到在哪了?网上也找不到关于STM8的CAN的寄存器设置例程,关于CAN总线的寄存器设置也不好找,所以我就自己按照原子哥的STM32的例程以及STM8的手册,想自己写一个,就出现了这个问题,我看了下库函数版的寄存器设置,例如CAN->Page.Config.BTR1这个寄存器,写在我的程序里也找不到这个寄存器定义,有人做过的能解答一下这个疑问吗?我用的STM8AF52A8。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
wangmingwei093
2019-07-20 13:35
自己给自己回答下吧,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;

一周热门 更多>