/*===================================
* 函 数 名: Set_SysClock_ToHSI
* 功能说明: 选择内部晶振8MHz作为系统时钟。
SYSCLK:48MHz,AHB:48MHz;
APB1:48MHz,HCLK:48MHz.
* 形 参:无
* 返 回 值: 无
=====================================*/
这是使用内部8MHZ高速晶振函数
void Set_SysClock_ToHSI(void)
{
RCC_DeInit(); //将外设RCC寄存器重设为缺省值
RCC_HSICmd(ENABLE);//使能内部高速晶振(HSI)
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功
RCC_HCLKConfig(RCC_SYSCLK_Div1); //配置AHB(HCLK)时钟=SYSCLK
RCC_PCLKConfig(RCC_HCLK_Div1); //配置APB(PCLK)钟=AHB时钟
FLASH_SetLatency(FLASH_Latency_1); //设置FLASH延时周期数为1
FLASH_PrefetchBufferCmd(ENABLE); //使能FLASH预取缓存
/* 选择锁相环(PLL)时钟源为HSI 2分频,倍频数为12,则PLL输出频率为 4MHz * 12 = 48MHz */
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
RCC_PLLCmd(ENABLE); // 使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待PLL输出稳定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择PLL作为系统时钟
while(RCC_GetSYSCLKSource() != 0x08); //等待PLL成为SYSCLK时钟源
// 0x00:HSI 作为系统时钟
// 0x04:HSE作为系统时钟
// 0x08:PLL作为系统时钟
}
这是串口1配置过程
/*========设置UART1Tx和RxGPIO==========*/
void USART1_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*==============设置USART1=================*/
void USART1_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;
USART1_GPIO_Configuration();
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, &USART_InitStructure);//初始化USART1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能USART1接收中断
USART_Cmd(USART1, ENABLE); //使能USART1
// USART_ClearFlag(USART1,USART_FLAG_TC);
}
求指点调试两天了没反应,示波器看了一下TX引脚电平,没反应
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢,找到问题了,打开串口1时钟的函数调错了
一周热门 更多>