软件信息
STM32CubeMX: V6.0.1
Keil MDK:V5.28
硬件信息
stm32f103c8t6最小系统板
ST-LINK V2
一、使用CubeMX创建一个stm32工程
初始化Debug、时钟
- 选择芯片;
- Pinout & Configuration标签页中,左侧选择【SYS】,选择【Serial Wire】(SWD);
- 选择【RCC】,打开HSE、LSE;
- Clock Configuration标签页中,靠中间位置输入框中填入最大时钟频率——72,按回车,OK
配置一个LED灯,生成工程
- 配置PC13为Output模式
- 选择Project Manager标签页,填写工程信息
- 点击右上角【GENERATE CODE】
- 添加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包
- 打开软件包管理
- 点击左下角【From Url】
- 点击【new】
- 输入:
- 选中,点击OK,开始下载
- 等待下载,OK,Close
三、使用RealThread组件
- 将RTT添加到工程
- 打开RTT功能
- RTT 使用的是SYS定时器,与HAL库使用的相同,无关紧要,点击【YES】即可;
- 点击右上角【GENERATE CODE】
四、使用RTThread API创建线程
-
注释【stm32f1xx_it.c】中【HardFault_Handler】、【SysTick_Handler】(如果有);
-
添加头文件
/* USER CODE BEGIN Includes */ #include "rtthread.h" /* USER CODE END Includes */
-
创建线程、启动线程
/* 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(&led_tid); /* USER CODE END 2 */
- 编译,下载