完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
STM32f070RBt6的串口3和其它串口冲突不能同时工作,stm32f070RBt6为64脚,TX:24脚PC4;RX :25脚,
void USART3_Configuration(void)//´®¿Ú3³õʼ»¯º¯Êý { //NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure3; /* Enable GPIO TX/RX clock */ __HAL_RCC_GPIOC_CLK_ENABLE(); /* Enable USART3 clock */ __HAL_RCC_USART3_CLK_ENABLE(); /* * USART3_TX > PC4 , USART3_RX > PC5 */ GPIO_InitStructure3.Pin = GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStructure3.Mode = GPIO_MODE_AF_PP; GPIO_InitStructure3.Pull = GPIO_NOPULL; GPIO_InitStructure3.Alternate = GPIO_AF_1; GPIO_InitStructure3.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStructure3); /** * @brief UART Initialization */ UartHandle3.Instance = USART3; UartHandle3.Init.BaudRate = 115200; UartHandle3.Init.WordLength = UART_WORDLENGTH_8B; UartHandle3.Init.StopBits = UART_STOPBITS_1; UartHandle3.Init.Parity = UART_PARITY_NONE; UartHandle3.Init.HwFlowCtl = UART_HWCONTROL_NONE; UartHandle3.Init.Mode = UART_MODE_TX_RX; UartHandle3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if(HAL_UART_DeInit(&UartHandle3) != HAL_OK) { Usart1Error_Handler(); } if(HAL_UART_Init(&UartHandle3) != HAL_OK) { Usart1Error_Handler(); } /*##3 Configure the NVIC for UART ########################################*/ /* NVIC for USART1 */ //HAL_NVIC_SetPriority(USART3_4_IRQn, 3, 1); //HAL_NVIC_EnableIRQ(USART3_4_IRQn); /* Enable USART1 Receive and Transmit interrupts */ __HAL_UART_ENABLE_IT(&UartHandle3,UART_IT_RXNE); __HAL_UART_ENABLE_IT(&UartHandle3,UART_IT_IDLE); /* Enable the USART1 */ __HAL_UART_ENABLE(&UartHandle3);//ʹÄÜ´®¿Ú1 } 要如何设置? |
|
相关推荐
8个回答
|
|
|
USART3 和 USART4 共用中断,只要你抓到中断就可以了。除此以外,正常情况不应该出现冲突现象。
|
|
|
|
|
|
|
|
|
|
|
|
加上usart3程序就死掉,屏蔽usart3程序就能正常运行
|
|
|
|
|
|
USART3 和 USART4 共用中断,USART3 和 USART4 只要屏蔽一个程序就能正常运行,2个都加上不行,USART3 和 USART4的初始化程序如下;void USART3_Configuration(void)//´®¿Ú3³õʼ»¯º¯Êý
{ //NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure3; /* Enable GPIO TX/RX clock */ __HAL_RCC_GPIOC_CLK_ENABLE(); /* Enable USART3 clock */ __HAL_RCC_USART3_CLK_ENABLE(); /* * USART3_TX -> PC4 , USART3_RX -> PC5 */ GPIO_InitStructure3.Pin = GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStructure3.Mode = GPIO_MODE_AF_PP; GPIO_InitStructure3.Pull = GPIO_NOPULL; GPIO_InitStructure3.Alternate = GPIO_AF_1; GPIO_InitStructure3.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStructure3); /** * @brief UART Initialization */ UartHandle3.Instance = USART3; UartHandle3.Init.BaudRate = 115200; UartHandle3.Init.WordLength = UART_WORDLENGTH_8B; UartHandle3.Init.StopBits = UART_STOPBITS_1; UartHandle3.Init.Parity = UART_PARITY_NONE; UartHandle3.Init.HwFlowCtl = UART_HWCONTROL_NONE; UartHandle3.Init.Mode = UART_MODE_TX_RX; UartHandle3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if(HAL_UART_DeInit(&UartHandle3) != HAL_OK) { Usart1Error_Handler(); } if(HAL_UART_Init(&UartHandle3) != HAL_OK) { Usart1Error_Handler(); } /*##-3- Configure the NVIC for UART ########################################*/ /* NVIC for USART1 */ // HAL_NVIC_SetPriority(USART3_4_IRQn, 3, 1); // HAL_NVIC_EnableIRQ(USART3_4_IRQn); /* Enable USART1 Receive and Transmit interrupts */ __HAL_UART_ENABLE_IT(&UartHandle3,UART_IT_RXNE); //__HAL_UART_ENABLE_IT(&UartHandle3,UART_IT_IDLE); /* Enable the USART1 */ __HAL_UART_ENABLE(&UartHandle3);//ʹÄÜ´®¿Ú1 } |
|
|
|
|
|
void USART4_Configuration(void)//´®¿Ú³õʼ»¯º¯Êý
{ //NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure4; /* Enable GPIO TX/RX clock */ __HAL_RCC_GPIOC_CLK_ENABLE(); /* Enable USART4 clock */ __HAL_RCC_USART4_CLK_ENABLE(); /* * USART4_TX -> PC10 , USART4_RX -> PC11 */ GPIO_InitStructure4.Pin = GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure4.Mode = GPIO_MODE_AF_PP; GPIO_InitStructure4.Pull = GPIO_NOPULL; GPIO_InitStructure4.Alternate = GPIO_AF_1; GPIO_InitStructure4.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStructure4); /** * @brief UART Initialization */ UartHandle4.Instance = USART4; UartHandle4.Init.BaudRate = 115200; UartHandle4.Init.WordLength = UART_WORDLENGTH_8B; UartHandle4.Init.StopBits = UART_STOPBITS_1; UartHandle4.Init.Parity = UART_PARITY_NONE; UartHandle4.Init.HwFlowCtl = UART_HWCONTROL_NONE; UartHandle4.Init.Mode = UART_MODE_TX_RX; UartHandle4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if(HAL_UART_DeInit(&UartHandle4) != HAL_OK) { Usart1Error_Handler(); } if(HAL_UART_Init(&UartHandle4) != HAL_OK) { Usart1Error_Handler(); } /*##-3- Configure the NVIC for UART ########################################*/ /* NVIC for USART1 */ HAL_NVIC_SetPriority(USART3_4_IRQn, 3, 1); HAL_NVIC_EnableIRQ(USART3_4_IRQn); /* Enable USART1 Receive and Transmit interrupts */ __HAL_UART_ENABLE_IT(&UartHandle4,UART_IT_RXNE); //__HAL_UART_ENABLE_IT(&UartHandle4,UART_IT_IDLE); /* Enable the USART1 */ __HAL_UART_ENABLE(&UartHandle4);//ʹÄÜ´®¿Ú1 } |
|
|
|
|
|
不会冲突呀,你在接收完成的回调函数那里判断一下Instance是USART4还是USART3就可以了呀
|
|
|
|
|
|
#define GPIO_AF1_USART3 ((uint8_t)0x01U) /*!< AF1: USART4 Alternate Function mapping 是USART3重映射还是USART4重映射
|
|
|
|
|
|
应该不至于会影响到,关键点应该在中断处理部分对两个串口接受或发送标志的检测是否正确
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:37 , Processed in 1.053639 second(s), Total 56, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
123