我是Cosmic编译器和STM8的新手。
在iostm8s103.h
中,Switch控制寄存器定义为
volatile char CLK_SWCR @0x50c5;
如何寻址该寄存器中的交换机忙位(SWBSY bit 0
)?
我需要等到交换机忙位清零。 (虽然有点)
奇怪的是,我找不到Cosmic编译器的例子。
答案 0 :(得分:0)
使用微控制器,使用易失性寄存器很简单。
#include <iostm8s103.h>
CLK_SWCR |= SWBSY; // to set the bit 0
CLK_SWCR &= ~SWBSY; // to reset the bit 0
在iostm8s103.h中,寄存器定义如下:
volatile char CLK_SWCR @0x50c5; /* Switch Control reg */
所以,等到BUSY,用那个iostm8s103.h,代码看起来像:
while ((CLK_SWCR | SWBSY) != 0);
如果使用stm8s.h而不是iostm8s103.h,则CLK寄存器 被定义为struct。
所以,等待BUSY,使用那个stm8s.h,代码看起来像:
while ((CLK->SWCR | CLK_SWCR_SWBSY) != 0);
或
while (CLK->SWCR & CLK_SWCR_SWBSY);