wmwei1989 发表于 2018-10-29 08:55:09

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

如题,最近在写CAN总线的收发功能,在设置STM8的CAN总线寄存器的时候,发现找不到相应的寄存器了,如下图所示,然后我查阅了iostm8af52a8.h文件中,发现只定义了部分寄存器,其他的我没找到,找不到在哪了?网上也找不到关于STM8的CAN的寄存器设置例程,关于CAN总线的寄存器设置也不好找,所以我就自己按照原子哥的STM32的例程以及STM8的手册,想自己写一个,就出现了这个问题,我看了下库函数版的寄存器设置,例如CAN->Page.Config.BTR1这个寄存器,写在我的程序里也找不到这个寄存器定义,有人做过的能解答一下这个疑问吗?我用的STM8AF52A8。CAN_MCR定义了,但是CAN_BTR1就没有定义报错

wmwei1989 发表于 2018-10-29 08:56:08

自己先顶一下自己,网上实在找不到寄存器版本的例程,都好几天了,没有解决找到答案,求助各路大神呀:'(

wenyangzeng 发表于 2018-10-29 10:21:35

本帖最后由 wenyangzeng 于 2018-10-29 10:23 编辑

库文件里有呀,可能是楼主未添加进工程里!


wmwei1989 发表于 2018-10-29 11:03:56

wenyangzeng 发表于 2018-10-29 10:21
库文件里有呀,可能是楼主未添加进工程里!

你是说直接用stm8s.h、stm8s_config.h、stm8s_it.c,stm8s_it,这四个文件吗,不用iostm8af52a8.h文件吗?是这个意思吗?

wenyangzeng 发表于 2018-10-29 11:23:50

本帖最后由 wenyangzeng 于 2018-10-29 11:27 编辑

wmwei1989 发表于 2018-10-29 11:03
你是说直接用stm8s.h、stm8s_config.h、stm8s_it.c,stm8s_it,这四个文件吗,不用iostm8af52a8.h文件吗? ...
这个CAN的库文件要添加到工程里呀:





wmwei1989 发表于 2018-10-29 11:39:34

wenyangzeng 发表于 2018-10-29 11:23
这个CAN的库文件要添加到工程里呀:

可是我想直接操作寄存器去写程序,不想用官方给的库函数,经常会出现bug,感觉不是太好用,之前用的一个GPIO的库函数,结果不知道什么原因,就是不能输出高电平,用寄存器就没问题了,就果断放弃用库操作了,不过我只是STM8选择放弃使用库,如果是STM32我就还是用库函数操作的,我寻思应该没有定义的寄存器需要自己去定义了,反正都有寄存器基地址什么的,正在看:lol

wmwei1989 发表于 2018-10-29 11:41:11

wenyangzeng 发表于 2018-10-29 11:23
这个CAN的库文件要添加到工程里呀:

我说的不能输出高电平,是排除硬件问题了的,而且当时有5路输出高电平,唯有一路怎么都不能输出,所以才放弃的,也没深究到底什么原因,上网查了一下,好多人也有遇到那样的问题的,所以,基于STM8的寄存器确实挺少的,就选择直接操作寄存器了

zcl201207 发表于 2018-10-29 20:08:34

STVD 里是有这些寄存器头文件的,IAR没怎么用不太清楚。。。:):):)

wmwei1989 发表于 2018-10-31 08:29:03

zcl201207 发表于 2018-10-29 20:08
STVD 里是有这些寄存器头文件的,IAR没怎么用不太清楚。。。

我看了,确实有,但是定义的我看不出来什么,STVD和IAR的头文件几乎一样,我把这部分代码贴出来,想知道怎么C:\Users\Administrator\Desktop

wmwei1989 发表于 2018-10-31 08:30:02

zcl201207 发表于 2018-10-29 20:08
STVD 里是有这些寄存器头文件的,IAR没怎么用不太清楚。。。

__IO_REG8_BIT(CAN_PSR,   0x5427, __READ_WRITE, __BITS_CAN_PSR);

/* CAN paged register 0 N/A */
__IO_REG8    (CAN_P0,      0x5428, __READ_WRITE);
/* CAN paged register 1 N/A */
__IO_REG8    (CAN_P1,      0x5429, __READ_WRITE);
/* CAN paged register 2 N/A */
__IO_REG8    (CAN_P2,      0x542A, __READ_WRITE);
/* CAN paged register 3 N/A */
__IO_REG8    (CAN_P3,      0x542B, __READ_WRITE);
/* CAN paged register 4 N/A */
__IO_REG8    (CAN_P4,      0x542C, __READ_WRITE);
/* CAN paged register 5 N/A */
__IO_REG8    (CAN_P5,      0x542D, __READ_WRITE);
/* CAN paged register 6 N/A */
__IO_REG8    (CAN_P6,      0x542E, __READ_WRITE);
/* CAN paged register 7 N/A */
__IO_REG8    (CAN_P7,      0x542F, __READ_WRITE);
/* CAN paged register 8 N/A */
__IO_REG8    (CAN_P8,      0x5430, __READ_WRITE);
/* CAN paged register 9 N/A */
__IO_REG8    (CAN_P9,      0x5431, __READ_WRITE);
/* CAN paged register A N/A */
__IO_REG8    (CAN_PA,      0x5432, __READ_WRITE);
/* CAN paged register B N/A */
__IO_REG8    (CAN_PB,      0x5433, __READ_WRITE);
/* CAN paged register C N/A */
__IO_REG8    (CAN_PC,      0x5434, __READ_WRITE);
/* CAN paged register D N/A */
__IO_REG8    (CAN_PD,      0x5435, __READ_WRITE);
/* CAN paged register E N/A */
__IO_REG8    (CAN_PE,      0x5436, __READ_WRITE);
/* CAN paged register F N/A */
__IO_REG8    (CAN_PF,      0x5437, __READ_WRITE);
页: [1] 2
查看完整版本: 关于STM8寄存器定义在哪个头文件中?