进来论坛了,到处都是看到大家为了抢板子赚ST币疯狂刷评论,好吧,小弟也有幸抢到一个板子,不过,做技术的进来看到论坛这么对的水帖子,未免觉得有几分失望。L4玩得也差不多了,本来也想玩玩他的低功耗和LCD驱动,再移植操作系统进去的,不过算了,毕竟没有什么意义!小弟的板子已经送给了小伙伴了。今天分享最后一个帖子后也算是回报社区送我L4板子玩,虽然技术含量不高。
很多人接触这些Nucleo估计都是用的内部时钟来玩的,但是我发现L4的MSI并不好用,可能是我设置的不好吧,用的也是HAL提供的Demo配置,
波特率设置115200总会出现乱码,毕竟自己用惯了外部时钟,所以就焊接一个16Mhz的晶振上去了,用外部晶振的时候,记得还要焊接上两个短路电阻和晶振
的起振电容,22p就行了,比较通用。
关于代码配置:
首先在stm32l4xx_conf.h中的HSE_VALUE改为16 000 000,
然后下面是正式的代码配置:
- RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- /* MSI is enabled after System reset, activate PLL with MSI as source */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
- RCC_OscInitStruct.HSEState = RCC_HSE_ON;
- //RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_6;
- //RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
- RCC_OscInitStruct.PLL.PLLM = 1;
- RCC_OscInitStruct.PLL.PLLN = 10;
- RCC_OscInitStruct.PLL.PLLP = 7;
- RCC_OscInitStruct.PLL.PLLR = 2;
- RCC_OscInitStruct.PLL.PLLQ = 2;
- if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- {
- /* Initialization Error */
- while(1);
- }
- /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
- clocks dividers */
- RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
- | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
- {
- /* Initialization Error */
- while(1);
- }
复制代码 开启了PLL,系统时钟80Mhz,这样开启USART轻松上115200,当然换成HSI也可以,楼主都尝试过,照葫芦画瓢就可以了。
|