完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在调试STM32G030串口时,串口设置8位数据、1位停止位、无校验时,串口通讯正常;但如果串口设置9位数据、1位停止位、偶校验时,串口不能正常通讯,有哪位高手看下问题出在哪吗?代码如下:
void MX_USART1_UART_Init(void) { LL_USART_InitTypeDef USART_InitStruct = {0}; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; //初始化串口时钟 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1); LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); //RS485发送接收控制IO初始化,输出端口 LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA); GPIO_InitStruct.Pin = RS485_CTRL_Pin; GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; LL_GPIO_Init(RS485_CTRL_GPIO_Port, GPIO_InitStruct); /***** USART1 GPIO Configuration ******************* PA9 ------> USART1_TX PA10 ------> USART1_RX ******************************************************/ GPIO_InitStruct.Pin = Usart1_TXD_Pin; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; GPIO_InitStruct.Alternate = LL_GPIO_AF_1; LL_GPIO_Init(Usart1_TXD_GPIO_Port, GPIO_InitStruct); GPIO_InitStruct.Pin = Usart1_RXD_Pin; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; GPIO_InitStruct.Alternate = LL_GPIO_AF_1; LL_GPIO_Init(Usart1_RXD_GPIO_Port, GPIO_InitStruct); /* USART1 interrupt Init */ NVIC_SetPriority(USART1_IRQn, 1); NVIC_EnableIRQ(USART1_IRQn); USART_InitStruct.PrescalerValue = LL_USART_PRESCALER_DIV1; USART_InitStruct.BaudRate = BAUDRATE; USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_9B; //9位带偶校验;此处设为8B USART_InitStruct.StopBits = LL_USART_STOPBITS_1; //1位停止位 USART_InitStruct.Parity = LL_USART_PARITY_EVEN; //偶校验;此处设NONE时串口正常 USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; LL_USART_Init(USART1, USART_InitStruct); LL_USART_SetTXFIFOThreshold(USART1, LL_USART_FIFOTHRESHOLD_1_8); LL_USART_SetRXFIFOThreshold(USART1, LL_USART_FIFOTHRESHOLD_1_8); LL_USART_DisableFIFO(USART1); LL_USART_ConfigAsyncMode(USART1); LL_USART_Enable(USART1); LL_USART_EnableIT_RXNE(USART1); LL_USART_EnableIT_PE(USART1); /* Polling USART1 initialisation */ while((!(LL_USART_IsActiveFlag_TEACK(USART1))) || (!(LL_USART_IsActiveFlag_REACK(USART1)))) { } SetRS485Status(RS485_RECEIVE_DATA_STATUS); } void USART1_IRQHandler(void) { u8 Datatemp; if( LL_USART_IsActiveFlag_RXNE(USART1) == RESET ) //未检测到串口中断 return; Datatemp = LL_USART_ReceiveData8(USART1); } |
|
相关推荐
1个回答
|
|
根据您提供的代码,可能存在以下问题导致串口不能正常通讯:
1. 代码中没有设置奇偶校验使能的配置。当您需要使用偶校验时,应该在初始化函数中添加如下代码: ``` USART_InitStruct.Parity = LL_USART_PARITY_EVEN; ``` 2. 代码中可能没有正确配置GPIO引脚作为USART的功能引脚。请确保初始化函数中的如下代码正确设置了USART引脚: ``` /* USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = LL_GPIO_PIN_9|LL_GPIO_PIN_10; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; GPIO_InitStruct.Alternate = LL_GPIO_AF_1; LL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 请根据以上提示检查您的代码,确保正确配置奇偶校验和GPIO引脚,并且与要实现的通讯协议一致。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
748浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
582浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 21:01 , Processed in 0.918181 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号