ST意法半导体
直播中

李桂兰

7年用户 1432经验值
私信 关注
[问答]

STM8S001J3中的UART1,在 STVP中对MCU进行编程时mcu不工作怎么解决?

我在 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 不再工作:









回帖(1)

李茜

2022-12-2 10:01:40
main void 开始的一个简单延迟解决了这个问题。MCU 和 UART 的 flash 现在可以工作了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分