|
以刚拿到手的 Nucleo 072为例 其他板子用户 请举一反三哈 (工程文件在帖末) 后续帖子:【干货】Nucleo072 usart 基于RTOS的应用 方便AT指令类外设开发 需要工具 MDK5 自行下载: STM32CUBEMX https://www.stmcu.org.cn/document/detail/index/id-214984 STM32CUBEF0 https://www.stmcu.org.cn/document/detail/index/id-216669 安装 cubeMX 由于使用MX下载固件库速度那是不说了相当慢啊 所以下载 STM32CUBEF0固件库然后下图安装
安装之后 新建一个工程 选择STM32F072RBT6 PINOUT 勾选 FREERTOS和 USART
因为我们调试可能需要使用 点击软件上方 齿轮键生成 keil 工程 至此 MX基于 HAL的库 生成完毕 使用MDK 打开工程 从上到下 的组依次为 OS 的C文件 .s 启动文件 用户文件 HAL库文件 CMSIS中间件文件 其中 在 第一组中的 cmsis_os.c 中实现了 cmsis_os 到FREERTOS 的中间层转换 稍后会讨论其中一处代码
接下来 添加自己的代码 首先添加 072 上面LED吧 板子不在身边 记得是PA5 控制 先看看 main.c 的 64 到 105行
mian函数 C代码的入口 初始化一些硬件后 osThreadDef(USER_Thread, StartThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE); osThreadCreate (osThread(USER_Thread), NULL); /* Start scheduler */ osKernelStart(NULL, NULL); 定义了一个 线程 USER_Thread 然后启动OS 注意 osThreadDef 是一个宏 定义一个用于描述 线程的结构体 并不是执行函数 宏的第二项参数 StartThread 为线程 入口函数地址。 至此mian函数的工作结束了 OS将转向 就绪线程并永不返回 也就是执行StartThread 修改 StartThrea函数 如下
添加一个 LED 函数
到这里可以编译下载到板子上运行 观察现象了 下面创建 RXT 的工程 新建一个工程 勾选 如下选项
红框 不要添加 不知为何 楼主添加 MDK的 startup 编译通不过 F4 的工程没有包含 HAL 接下来 需要自行添加HAL 库 把原来的 main.c 复制一份更名为 rtx_main.c
文件添加完毕 接下来定义 头文件目录和 系统宏
修改 rtx_main.c 下面两处需要修改
修改 stm32f0xx_hal_conf.h 添加 图示内容 不出意外 下面 将可以直接编译了!!
写的有些多了 本来想 继续写 RTOS 基于串口的 应用 太长了 下次发帖写了 下面提出一个讨论 MX 创建的 工程 FREERTOS 中 cmsis_os.c 中 创建一个信号量 osSemaphoreCreate参数 count 直接 传递给 xSemaphoreCreateCounting的两个形参
原型 #define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) ) 该宏创建一个 数值型信号量 第一个参数是 信号量最大数值 第二个则为 初始化值 基于串口使用信号量 那么需要如下要求 假设 usart_sem 为串口使用的信号量 每收到一个数据 usart_sem ++ 缓冲 1024字节 需要数据的线程 osSemaphoreWait(usart_sem ); 当有数据时 线程被激活 获取数据 如此我们知道 这个信号量的 最大值应为1024 可是使用 ST 的cmsis_os osSemaphoreCreate 创建一个信号亮 osSemaphoreCreate(0,1024); 会出现这样的问题 ! 此信号量 被赋予初值1024 意味着 这个信号量将可以被osSemaphoreWait 1024次 显然这不是我们想要 通常 我们需要的数值型信号量 最大值可以很大 但是初值 基本为0,或1 不懂 这样设计意义何在?
FREERTOS.zip
(4.76 MB, 下载次数: 809)
|
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
据说库很大,效率低?求告知!