我在 STM8S001J3 的 UART1 上遇到了一些问题。我正在使用下面的简单代码(编译没问题),但是当我尝试在 STVP 中对 MCU 进行编程时,发生错误并且 MCU 不再工作,即使我尝试使用功能固件进行编程(例如仅设置 GPIO 端口)。任何人都知道如何解决这个问题?或者如果有其他方法可以在此 MCU 中使用 UART1。
如果我把这个条件设置为 DISABLE,编程过程正常,但 UART 不工作。
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
#include "STM8S.h"
无效时钟设置(无效);
void GPIO_setup(void);
void UART1_setup(void);
无效主要(无效)
{
无符号字符 i = 0;
字符 ch = 0;
时钟设置();
GPIO_setup();
UART1_setup();
同时(真)
{
如果(UART1_GetFlagStatus(UART1_FLAG_RXNE)== TRUE)
{
ch = UART1_ReceiveData8();
UART1_ClearFlag(UART1_FLAG_RXNE);
UART1_SendData8(i + 0x30);
}
如果(UART1_GetFlagStatus(UART1_FLAG_TXE)== FALSE)
{
我++;
}
};
}
void clock_setup(无效)
{
CLK_DeInit();
CLK_HSECmd(禁用);
CLK_LSICmd(禁用);
CLK_HSICmd(启用);
同时(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)== FALSE);
CLK_ClockSwitchCmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI,
禁用,CLK_CURRENTCLOCKSTATE_ENABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_
tiMER1, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, DISABLE);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE);
}
void GPIO_setup(无效)
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_DeInit(GPIOA);
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);
}
void UART1_setup(void)
{
UART1_DeInit();
UART1_Init(9600,
UART1_WORDLENGTH_8D,
UART1_STOPBITS_1,
UART1_PARITY_NO,
UART1_SYNCMODE_CLOCK_DISABLE,
UART1_MODE_TXRX_ENABLE);
UART1_Cmd(启用);
}
发生此错误时,MCU 不再工作: