本帖最后由 新曲难觅旧知音 于 2023-7-27 22:49 编辑
写在前面
本来啊,这期计划是做个蓝牙相关的实例来着。但是啊,这个蓝牙HID搞了好几天没搞懂。鸽一下,今天先整点别的。
一、ThreadX
它是专门为深度嵌入式实时 IoT 应用程序设计的。提供高级计划、通信、同步、计时器、内存管理和中断管理功能。非常易于使用,适用于要求极其苛刻的嵌入式应用程序。因为ThreadX 的占用空间非常小,最少只需要一个 2KB 的指令区域和 1 KB 的 RAM。
二、配置过程
首先呢,就是把我们的RCC调成外部晶振模式,
然后调节时钟,使芯片工作在最高的工作频率。注意框中的选择,拨到外部晶振HSE,和PLL
AHB5的倍频系数好像不能自动切换,注意手动拨到4分频
咱们就按顺序一点点往下配置。既然我们要点灯,就要把相应的GPIO口给配置一下。
因为我们要用到的RTOS把Systickg给占用了,但是裸机系统工作时也需要时钟源。这里就选择TIM17作为时钟源。
然后在中间件和软件包中选ThreadX,先只勾选核心就行了
然后是系统调度的频率,默认是100的意思是每秒进行100次的调度,我们改成1000,主要是为了方便。
基本配置就这些了,先生成下工程试试。
打开工程后首先编译下,可以看到0错误0警告。
需要手动添加的主要是在app_threadx.h里添加main.h头文件。这步是为了让编译器知道GPIO
调用ThreadX的api创建两个进程
然后就可以在app_azure_rtos.c里面写我们需要的任务了。
这里写了两个任务,任务一是1秒钟翻转一次LED2,任务二是1.5秒翻转一次LED3
烧录就可以看到现象。红灯以1.5s频率闪烁,绿灯以1秒闪烁。
|