|
发表于 2023-2-28 15:14:27
|
显示全部楼层
本帖最后由 小飞侠凯凯 于 2023-2-28 16:06 编辑
硬汉老哥,我使用裸机历程中的“V7-013_RS485多机通讯”,把时钟改为HSI,代码如下(仅仅改了分频) RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
HAL_StatusTypeDef ret = HAL_OK; /* 锁住SCU(Supply configuration update) */
MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);
/* 1、芯片内部的LDO稳压器输出的电压范围,可选VOS1,VOS2和VOS3,不同范围对应不同的Flash读速度, 详情看参考手册的Table 12的表格。 2、这里选择使用VOS1,电压范围1.15V - 1.26V。 */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
// System Clock source = PLL (HSE)
// SYSCLK(Hz) = 400000000 (CPU Clock)
// HCLK(Hz) = 200000000 (AXI and AHBs Clock)
// AHB Prescaler = 2
// D1 APB3 Prescaler = 2 (APB3 Clock 100MHz)
// D2 APB1 Prescaler = 2 (APB1 Clock 100MHz)
// D2 APB2 Prescaler = 2 (APB2 Clock 100MHz)
// D3 APB4 Prescaler = 2 (APB4 Clock 100MHz)
// HSE Frequency(Hz) = 25000000
// PLL_M = 5
// PLL_N = 160
// PLL_P = 2
// PLL_Q = 4
// PLL_R = 2
// VDD(V) = 3.3
// Flash Latency(WS) = 4
/* 使能HSE,并选择HSE作为PLL时钟源 */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSEState = RCC_HSE_OFF;
RCC_OscInitStruct.HSIState = RCC_HSE_ON;
RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 4;
RCC_OscInitStruct.PLL.PLLN = 50;
RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLQ = 2;
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
if(ret != HAL_OK)
{ Error_Handler(__FILE__, __LINE__); }
// 选择PLL的输出作为系统时钟
// 配置RCC_CLOCKTYPE_SYSCLK系统时钟
// 配置RCC_CLOCKTYPE_HCLK 时钟,对应AHB1,AHB2,AHB3和AHB4总线
// 配置RCC_CLOCKTYPE_PCLK1时钟,对应APB1总线
// 配置RCC_CLOCKTYPE_PCLK2时钟,对应APB2总线
// 配置RCC_CLOCKTYPE_D1PCLK1时钟,对应APB3总线
// 配置RCC_CLOCKTYPE_D3PCLK1时钟,对应APB4总线
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 | \ CC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D3PCLK1); RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; /* 此函数会更新SystemCoreClock,并重新配置HAL_InitTick */
ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
if(ret != HAL_OK)
{ Error_Handler(__FILE__, __LINE__); };
但是使用”V7-600_uCOS-III实验_程序移植模板(3.08.00)“这个例程时,也是只改了这些,串口打印就是乱码。是不是还有其他地方需要注意的
|
|