完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近刚刚接触stm8,在使用串口的时候,死活的调试不通,请教万能的大神们
串口配置 void Uart1_Init(void) { CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_PP_High_Fast);//TXD GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);//RXD GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_2, ENABLE); GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_3, ENABLE); USART_DeInit(USART1); //复位UART1 /* * 将UART1配置为: * 波特率 = 115200 * 数据位 = 8 * 1位停止位 * 无校验位 * 使能接收和发送 */ USART_Init(USART1, (u32)9600, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx); USART_ClearITPendingBit(USART1, USART_IT_RXNE); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断 USART_ITConfig(USART1, USART_IT_TC, ENABLE);//开启接收中断 USART_Cmd(USART1, ENABLE); //使能UART2 } main() { CLK_HSICmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == RESET); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); Uart1_Init(); while(1) { Delay_ms(20); USART_SendData8(USART1, 0xfb);//在进入这个函数时经常提示 参数无效,而且数据寄存器中一直都是0x00,而且直接给该寄存器写值也写不进去 while(SART_GetFlagStatus( USART1, USART_FLAG_TC) == RESET); } } 代码就这么点,但就是没有数据,而且直接给USART1-DR赋值也没用, [/td] 以下内容为评论 [td]顶一下 [/td] [td]/* Includes ------------------------------------------------------------------*/ #include "stm8l15x.h" #include "stdio.h" /** @addtogroup STM8L15x_StdPeriph_Examples * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* define the GPIO port and pins connected to Leds mounted on STM8L152X-EVAL board */ #define LED_GPIO_PORT GPIOB #define LED_GPIO_PINS GPIO_Pin_7 #define KEY_GPIO_PORT GPIOD #define KEY_GPIO_PINS GPIO_Pin_2 /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ void Delay (uint16_t nCount); #ifdef _RAISONANCE_ #define PUTCHAR_PROTOTYPE int putchar (char c) #define GETCHAR_PROTOTYPE int getchar (void) #elif defined (_COSMIC_) #define PUTCHAR_PROTOTYPE char putchar (char c) #define GETCHAR_PROTOTYPE char getchar (void) #else /* _IAR_ */ #define PUTCHAR_PROTOTYPE int putchar (int c) #define GETCHAR_PROTOTYPE int getchar (void) #endif /* _RAISONANCE_ */ /* Private functions ---------------------------------------------------------*/ /** * @brief Main program. * @param None * @retval None */ void main(void) { uint8_t ans; /* Config system clock as: HSI @ 16MHz */ CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); /* Initialize LEDs mounted on STM8L152X-EVAL board */ GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast); /* Initialize KEYs mounted on STM8L152X-EVAL board */ GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_No_IT); /* USART configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Receive and transmit enabled - USART Clock enabled */ /* Enable USART clock */ CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); /* USART configuration */ USART_Init(USART1, (uint32_t)115200, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx)); /* Output a message on Hyperterminal using printf function */ printf("nrUSART Example: retarget the C library printf() and getchar() functions to the USARTnr"); printf("nrEnter Text: nr"); while (1) { ans = getchar(); printf("%c", ans); } } /** * @brief Inserts a delay time. * @param nCount: specifies the delay time length. * @retval None */ void Delay(__IO uint16_t nCount) { /* Decrement nCount value */ while (nCount != 0) { nCount--; } } /** * @brief Retargets the C library printf function to the USART. * @param[in] c Character to send * @retval char Character sent * @par Required preconditions: * - None */ PUTCHAR_PROTOTYPE { /* Write a character to the USART */ USART_SendData8(USART1, c); /* Loop until the end of transmission */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (c); } /** * @brief Retargets the C library scanf function to the USART. * @param[in] None * @retval char Character to Read * @par Required preconditions: * - None */ GETCHAR_PROTOTYPE { int c = 0; /* Loop until the Read data register flag is SET */ while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); c = USART_ReceiveData8(USART1); return (c); } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %drn", file, line) */ /* Infinite loop */ while (1) {} } #endif /******************************************************/ |
|
相关推荐
1个回答
|
|
STM8L051F3串口调试不通的原因可能有以下几点:
1. 波特率设置不正确:确保你的串口调试助手或其他串口工具的波特率与STM8L051F3的波特率设置相匹配。波特率不匹配可能导致通信失败。 2. 串口引脚配置错误:检查你的串口TXD和RXD引脚是否正确连接到STM8L051F3的相应引脚。在你的代码中,TXD连接到GPIOC的第3引脚,RXD连接到GPIOC的第2引脚。确保硬件连接正确。 3. 串口中断配置:STM8L051F3的串口可能需要配置中断来处理接收到的数据。检查你的代码中是否有相关的中断配置。 4. 串口模式设置:确保你的串口模式设置正确。STM8L051F3支持多种串口模式,如标准UART、IrDA、LIN等。检查你的代码中是否设置了正确的串口模式。 5. 电源和地线连接:确保STM8L051F3的电源和地线连接正确。不良的电源和地线连接可能导致串口通信不稳定。 6. 串口调试助手设置:检查你的串口调试助手或其他串口工具的设置,确保它们与STM8L051F3的串口配置相匹配。例如,数据位、停止位、奇偶校验位等。 7. 代码问题:检查你的初始化函数`Uart1_Init`是否有语法错误或其他问题。确保所有必要的串口配置步骤都已正确执行。 8. 硬件问题:如果以上步骤都无法解决问题,可能是STM8L051F3本身或相关硬件存在问题。尝试使用其他STM8L051F3或其他微控制器进行测试,以排除硬件故障的可能性。 综上所述,要解决STM8L051F3串口调试不通的问题,需要从多个方面进行排查。希望这些建议能帮助你找到问题所在并解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1659 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1571 浏览 1 评论
998 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1617 浏览 2 评论
1877浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
663浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
529浏览 3评论
548浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 09:36 , Processed in 0.802548 second(s), Total 79, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号