STM8S Cosmic编译器定义

时间:2016-10-27 14:26:13

标签: c

我是Cosmic编译器和STM8的新手。

iostm8s103.h中,Switch控制寄存器定义为 volatile char CLK_SWCR @0x50c5;

如何寻址该寄存器中的交换机忙位(SWBSY bit 0)? 我需要等到交换机忙位清零。 (虽然有点) 奇怪的是,我找不到Cosmic编译器的例子。

1 个答案:

答案 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);