使用rtt-studio与stm32CubeMx联合创建项目
创建rt-thread项目
设置项目信息
在项目资源管理器中"右击",创建RRT studio 项目
双击"RT-Thread 项目"。
选择MCU,设置UART,以及调试方式。添加项目名称,点击"完成"按钮。
代码生成后会在项目资源管理器内生成项目目录。
配置代码生成hex文件
此时代码是可以直接编译的。
编译原始rt-thread项目
第一次编译时出错。
将RT_WEAK void rt_hw_board_init()前的RT_WEAK去掉即可继续编译。
使用CubeMx配置引脚
配置时钟
使用外部时钟。
配置管脚
PA8脚外接一个LED。将PA8脚配置成输出模式。
配置项目信息
不要选择"Generate peripheral initialization as a pair of '.c/.h' file per peripheral"
生成代码
点击"GENERATE CODE",生成代码。
关闭CubeMx
代码生成后,要先关闭CubeMx。
随后rtt-studio会将原先的stm32f4xx_hal_conf.h备份,代码内会引用CubeMx刚刚生成的stm32f4xx_hal_conf.h
排除构建
参与构建的代码
排除构建后的代码目录。
显示被排除构建的代码
排除构建的代码目录上有个斜杆
编译运行
使用外部时钟
说明时钟更改成功。
添加LED控制代码
添加头文件
#include "stm32f4xx_hal.h"
管脚定义
/* Private defines -----------------------------------------------------------*/
#define led_Pin GPIO_PIN_8
#define led_GPIO_Port GPIOA
#define USART1_TX_Pin GPIO_PIN_9
#define USART1_TX_GPIO_Port GPIOA
#define USART1_RX_Pin GPIO_PIN_10
#define USART1_RX_GPIO_Port GPIOA
管脚初始化
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(led_GPIO_Port, led_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : led_Pin */
GPIO_InitStruct.Pin = led_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(led_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
修改主函数
static void MX_GPIO_Init(void);
int main(void)
{
int count = 1;
MX_GPIO_Init();
while (count++)
{
LOG_D("Hello RT-Thread!");
rt_thread_mdelay(1000);
HAL_GPIO_WritePin(led_GPIO_Port, led_Pin, count%2);
}
return RT_EOK;
}
编译
总结
到此完成使用rtt-studio与stm32CubeMx联合创建项目的任务。