STM32CubeMX+RTThread 生成Keil5工程

软件信息

STM32CubeMX: V6.0.1

Keil MDK:V5.28

硬件信息

stm32f103c8t6最小系统板

ST-LINK V2

一、使用CubeMX创建一个stm32工程

初始化Debug、时钟

  1. 选择芯片;
  2. Pinout & Configuration标签页中,左侧选择【SYS】,选择【Serial Wire】(SWD);
  3. 选择【RCC】,打开HSE、LSE;
  4. Clock Configuration标签页中,靠中间位置输入框中填入最大时钟频率——72,按回车,OK

配置一个LED灯,生成工程

  1. 配置PC13为Output模式
  2. 选择Project Manager标签页,填写工程信息
  3. 点击右上角【GENERATE CODE】
  4. 添加LED闪烁代码
/* USER CODE BEGIN WHILE */
  while (1)
  {
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

这样就得到一个LED闪烁工程;

二、在CubeMX中添加RealThread包

  1. 打开软件包管理
  2. 点击左下角【From Url】
  3. 点击【new】
  4. 输入: 【Check】 【OK】
  5. 选中,点击OK,开始下载
  6. 等待下载,OK,Close

三、使用RealThread组件

  1. 将RTT添加到工程
  2. 打开RTT功能
  3. RTT 使用的是SYS定时器,与HAL库使用的相同,无关紧要,点击【YES】即可;
  4. 点击右上角【GENERATE CODE】

四、使用RTThread API创建线程

  1. 注释【stm32f1xx_it.c】中【HardFault_Handler】、【SysTick_Handler】(如果有);
  2. 添加头文件 /* USER CODE BEGIN Includes */ #include "rtthread.h" /* USER CODE END Includes */
  3. 创建线程、启动线程 /* USER CODE BEGIN 0 */ void led_task(void *arg) { while(1) { rt_thread_mdelay(500); HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); } } /* USER CODE END 0 */ ... /* USER CODE BEGIN 2 */ struct rt_thread led_tid; static rt_uint8_t led_stack[512]; rt_err_t result; result = rt_thread_init(&led_tid, "tled", led_task, RT_NULL, led_stack, sizeof(led_stack), 6, 20); RT_ASSERT(result == RT_EOK); (void)result; rt_thread_startup(tid); /* USER CODE END 2 */
  4. 编译,下载
经验分享 程序员 微信小程序 职场和发展