如题,最近在写CAN总线的收发功能,在设置STM8的CAN总线寄存器的时候,发现找不到相应的寄存器了,如下图所示,然后我查阅了iostm8af52a8.h文件中,发现只定义了部分寄存器,其他的我没找到,找不到在哪了?网上也找不到关于STM8的CAN的寄存器设置例程,关于CAN总线的寄存器设置也不好找,所以我就自己按照原子哥的STM32的例程以及STM8的手册,想自己写一个,就出现了这个问题,我看了下库函数版的寄存器设置,例如CAN->Page.Config.BTR1这个寄存器,写在我的程序里也找不到这个寄存器定义,有人做过的能解答一下这个疑问吗?我用的STM8AF52A8。CAN_MCR定义了,但是CAN_BTR1就没有定义报错 |
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
库文件里有呀,可能是楼主未添加进工程里!
评分
查看全部评分
你是说直接用stm8s.h、stm8s_config.h、stm8s_it.c,stm8s_it,这四个文件吗,不用iostm8af52a8.h文件吗?是这个意思吗?
这个CAN的库文件要添加到工程里呀:
可是我想直接操作寄存器去写程序,不想用官方给的库函数,经常会出现bug,感觉不是太好用,之前用的一个GPIO的库函数,结果不知道什么原因,就是不能输出高电平,用寄存器就没问题了,就果断放弃用库操作了,不过我只是STM8选择放弃使用库,如果是STM32我就还是用库函数操作的,我寻思应该没有定义的寄存器需要自己去定义了,反正都有寄存器基地址什么的,正在看
我说的不能输出高电平,是排除硬件问题了的,而且当时有5路输出高电平,唯有一路怎么都不能输出,所以才放弃的,也没深究到底什么原因,上网查了一下,好多人也有遇到那样的问题的,所以,基于STM8的寄存器确实挺少的,就选择直接操作寄存器了
我看了,确实有,但是定义的我看不出来什么,STVD和IAR的头文件几乎一样,我把这部分代码贴出来,想知道怎么C:\Users\Administrator\Desktop[img][/img]
__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);