1、系统的时钟树通过STM32 CUBE MX软件配置,然后通过替换RT-Thread Studio工程中rt_clk.c文件中的system_clock_config()函数设置系统时钟树。主板使用外部时钟和内部时钟,可以通过这个操作设置。官方例程一般默认使用内部时钟。下面是25M外部时钟的配置:
void system_clock_config(int target_freq_mhz)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Configure the main internal regulator output voltage
*/
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}
【嵌入式|2021-07-08 使用RT-Thread Studio程序调试过程中的要点记录(芯片使用STM32F407ZE)】}
2、通过RT-Thread Studio程序配置CAN通讯功能,RT-Thread Studio生成的工程中不会自动添加CAN的驱动代码需要自己到这个网站下载,手动添加(https://github.com/RT-Thread/rt-thread/),如下图所示:
文章图片
推荐阅读
- 嵌入式|2021-07-09 RT-Thread Studio 调试fal要点记录
- 学习笔记|C++ STL概述
- rtt|RT-thread笔记
- 理论知识|嵌入式应用的超轻量级、高性能的 C/C++ 日志库
- stm32|stm32之继电器驱动
- STM32|STM32之继电器驱动(上下拉电阻)
- 运维|实现网络连通检测的五种方法
- Java|MyBatis Demo演示
- 数据结构|模拟栈的实现(JAVA)