stm8s cco标志从未设置
我有一个discovery stm8s003k板,当我测试一个程序的cco能力时,cco似乎永远不会稳定,并且程序始终保持在线:stm8s cco标志从未设置,c,microcontroller,stm8,C,Microcontroller,Stm8,我有一个discovery stm8s003k板,当我测试一个程序的cco能力时,cco似乎永远不会稳定,并且程序始终保持在线:while(CLK_GetFlagStatus(CLK_FLAG_CCORDY)==FALSE) 代码和更多详细说明 我用下面的代码对它进行了测试,我甚至为更低和更高的频率更改了预定标器,我也用外部水晶对它进行了检查(并更改了代码),但它仍然处于状态(CLK_GetFlagStatus(CLK_FLAG_CCORDY)=FALSE)永远 当我调试代码并在程序启用CCOE
while(CLK_GetFlagStatus(CLK_FLAG_CCORDY)==FALSE)代码>
代码和更多详细说明
我用下面的代码对它进行了测试,我甚至为更低和更高的频率更改了预定标器,我也用外部水晶对它进行了检查(并更改了代码),但它仍然处于状态(CLK_GetFlagStatus(CLK_FLAG_CCORDY)=FALSE)代码>永远
当我调试代码并在程序启用CCOEN位后在调试器环境中跳过时,输出将启动,频率为true。但两个标志CCORDY和CCOBSY都保持设置状态(调试器中的CCOR=0x69),并且始终保持在while循环中。我的代码是:
#include "STM8S.h"
#define LED_pin GPIO_PIN_0
#define LED_port GPIOD
void setup(void);
void clock_setup(void);
void GPIO_setup(void);
void main(void)
{
setup();
GPIO_WriteLow(LED_port, LED_pin);
while(TRUE){};
}
void setup(void)
{
clock_setup();
GPIO_setup();
}
void clock_setup(void)
{
CLK_DeInit();
CLK_HSECmd(DISABLE);
CLK_LSICmd(DISABLE);
CLK_HSICmd(ENABLE);
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == FALSE);
CLK_ClockSwitchCmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV4);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI,
DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE);
CLK_CCOConfig(CLK_OUTPUT_CPU);
CLK_CCOCmd(ENABLE);
while(CLK_GetFlagStatus(CLK_FLAG_CCORDY) == FALSE);
}
void GPIO_setup(void)
{
GPIO_DeInit(LED_port);
GPIO_Init(LED_port, LED_pin, GPIO_MODE_OUT_OD_HIZ_FAST);
}