如题,最近在写CAN总线的收发功能,在设置STM8的CAN总线寄存器的时候,发现找不到相应的寄存器了,如下图所示,然后我查阅了iostm8af52a8.h文件中,发现只定义了部分寄存器,其他的我没找到,找不到在哪了?网上也找不到关于STM8的CAN的寄存器设置例程,关于CAN总线的寄存器设置也不好找,所以我就自己按照原子哥的STM32的例程以及STM8的手册,想自己写一个,就出现了这个问题,我看了下库函数版的寄存器设置,例如CAN->Page.Config.BTR1这个寄存器,写在我的程序里也找不到这个寄存器定义,有人做过的能解答一下这个疑问吗?我用的STM8AF52A8。CAN_MCR定义了,但是CAN_BTR1就没有定义报错 |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
库文件里有呀,可能是楼主未添加进工程里!
评分
查看全部评分
你是说直接用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);
是上面那部分代码吗?但是貌似不止这些寄存器,我用的函数库中的头文件去做了,看了下函数库的stm8s.h中的寄存器定义,远远不止这些寄存器,是不是还需要我自己再去补充?
http://www.openedv.com/forum.php ... =page%3D1#pid896649