完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
下面是我的配置代码:
static void GPIO_USART1_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOUSART1, GPIO_PinSource9, GPIO_AF_1); GPIO_PinAFConfig(GPIOUSART1, GPIO_PinSource10, GPIO_AF_1); /* GPIO_PIN9 - gt; USART1-TX GPIO_PIN10 - gt; USART1-RX */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOUSART1, amp;GPIO_InitStructure); } void USART1_Configuration(void) { USART_InitTypeDef USART_InitStructure; GPIO_USART1_Configuration(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, amp;USART_InitStructure); USART_Cmd(USART1, ENABLE);//ʹÄÜ´®¿Ú1 } void UART1_send_byte(uint8_t byte) { while(!((USART1- gt;ISR) amp;(1ISR) amp;(1ISR amp; (1CR |= (uint32_t)0x00000001; /* Reset SW[1:0], HPRE[3:0], PPRE[2:0], ADCPRE and MCOSEL[2:0] bits */ RCC- gt;CFGR amp;= (uint32_t)0xF8FFB80C; /* Reset HSEON, CSSON and PLLON bits */ RCC- gt;CR amp;= (uint32_t)0xFEF6FFFF; /* Reset HSEBYP bit */ RCC- gt;CR amp;= (uint32_t)0xFFFBFFFF; /* Reset PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */ RCC- gt;CFGR amp;= (uint32_t)0xFFC0FFFF; /* Reset PREDIV1[3:0] bits */ RCC- gt;CFGR2 amp;= (uint32_t)0xFFFFFFF0; /* Reset USARTSW[1:0], I2CSW, CECSW and ADCSW bits */ RCC- gt;CFGR3 amp;= (uint32_t)0xFFFFFEAC; /* Reset HSI14 bit */ RCC- gt;CR2 amp;= (uint32_t)0xFFFFFFFE; /* Disable all interrupts */ RCC- gt;CIR = 0x00000000; /* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */ SetSysClock(); } static void SetSysClock(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/ /* Enable HSE */ RCC- gt;CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ do { HSEStatus = RCC- gt;CR amp; RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) amp; amp; (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC- gt;CR amp; RCC_CR_HSERDY) != RESET) { HSEStatus = (uint32_t)0x01; } else { HSEStatus = (uint32_t)0x00; } if (HSEStatus == (uint32_t)0x01) { /* Enable Prefetch Buffer */ FLASH- gt;ACR |= FLASH_ACR_PRFTBE; FLASH- gt;ACR |= (uint32_t)FLASH_ACR_LATENCY; /* HCLK = SYSCLK */ RCC- gt;CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK = HCLK */ RCC- gt;CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1; /* PLL configuration: = HSE * 4 = 40 MHz */ RCC- gt;CFGR amp;= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC- gt;CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL4); /* Enable PLL */ RCC- gt;CR |= RCC_CR_PLLON; /* Wait till PLL is ready */ while((RCC- gt;CR amp; RCC_CR_PLLRDY) == 0) { } /* Select PLL as system clock source */ RCC- gt;CFGR amp;= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC- gt;CFGR |= (uint32_t)RCC_CFGR_SW_PLL; /* Wait till PLL is used as system clock source */ while ((RCC- gt;CFGR amp; (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) { } } else { /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ } } 调了两天了,一直找不到问题, |
|
相关推荐
1个回答
|
|
|
STM32F05串口通信收发不一致的原因可能有以下几点:
1. 波特率不匹配:确保发送端和接收端的波特率设置相同。波特率设置错误可能导致数据传输错误或丢失。 2. 串口模式设置不正确:检查USART_InitTypeDef结构体中的USART_Mode参数,确保发送和接收模式都已启用(USART_Mode_Tx | USART_Mode_Rx)。 3. 时钟配置错误:检查RCC_APB2PeriphClockCmd函数中的参数,确保正确配置了串口时钟。 4. GPIO配置错误:检查GPIO_PinAFConfig函数中的参数,确保正确配置了TX和RX引脚的复用功能。 5. 串口初始化未完成:确保在调用USART_Init和USART_Cmd函数之前,已经正确初始化了GPIO和串口。 6. 缓冲区溢出:确保发送和接收缓冲区足够大,以避免数据丢失。 7. 硬件问题:检查硬件连接是否正确,包括TX和RX引脚的连接,以及地线和电源线的连接。 8. 软件逻辑错误:检查代码中是否有逻辑错误,例如错误的数据发送或接收顺序。 针对您提供的代码,我无法看到完整的配置代码,但请确保以下几点: 1. 检查USART_InitTypeDef结构体中的参数设置,特别是波特率、字长、停止位和奇偶校验位。 2. 确保已经调用USART_Init和USART_Cmd函数来初始化和启用串口。 3. 检查GPIO_PinAFConfig函数中的参数,确保TX和RX引脚的复用功能已正确配置。 4. 如果可能,请提供完整的代码,以便更详细地分析问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4199 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3261 浏览 1 评论
2791 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2224 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
15127 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3161浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1936浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2105浏览 3评论
2018浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2210浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 05:27 , Processed in 1.333615 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1408