一、前言
前面使用RT-Thread Studio创建基于BSP工程,而只有已经做好提交到RT-Thread的BSP才能用,如果想使用RT-Thread Studio基于自己的开发板创建一个工程怎么做呢?只需要创建基于芯片的工程即可,这里我使用中移物联的NBIOT开发进行使用,芯片是STM32F103RET6。
二、创建使用默认HSI时钟工程
1、在创建的时候选择基于芯片,选择对应的芯片型号,并选择控制台串口,其他步骤和创建基于BSP的类似,然后点击完成
2、如果使用默认的时钟设置,是使用芯片内部的HSI时钟,构建工程,然后下载到芯片观察效果
三、使用外部晶振作为时钟
如果使用外面晶振作为时钟,需要修改时钟配置,让工程和自己的板子适配,否则时钟不对,会影响正常使用。
1、在drviers目录下,找到stm32f1xx_hal_conf.h头文件,修改HSE_VALUE
的值,中移物联的NBIOT开发板使用的是12M紧张,因此这里的#define HSE_VALUE ((uint32_t)8000000)
需要改为#define HSE_VALUE ((uint32_t)12000000)
,如果使用的是8M外部竞争晶振,只需为默认即可
2、修改board.c
的SystemClock_Config
函数,修改如下,这里需要注意的是,如果RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
,前面设置HSE_VALUE
为((uint32_t)12000000)
,因此12*6=72M
,根据实际需要,可以修改RCC_PLL_MUL6
来修改时钟频率。
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**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_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
3、构建工程,并下载到芯片,观察效果