×
嵌入式 > 嵌入式开发 > 详情

基于μC/OS-III及STM32的多功能控制器设计

发布时间:2020-06-17 发布时间:
|

电动轨道车控制系统一般分为多个子系统,子系统受一个主控器控制。这样的结构设计繁琐,编程复杂。采用μC/OS-III操作系统、STM32F103RC微控制器、12864液晶屏、PVC按键、无线串口模块、锂电池等实现具有人机界面、无线串口功能的总线主控器。该控制器具有人机界面、轨道车主控器、遥控接收器、遥控面板等多种功能,并且能在不同项目中使用。(※ μC/OS-III从官网上下载,文件名为Micrium_uC-Eval-STM32F107_uCOS-III,版本为V1.29.01.00。)

1 硬件结构

从系统接口看,该控制器具有显示、按键、无线收发、串口、485总线等接口,作遥控面板时用电池供电,内部具有电池和充电电路。硬件框图如图1所示。

图1中无线串口用模块实现系统遥控功能,显示器用并口连接。键盘部分有或门电路,可实现按键中断。电源电路中的外部电压、电池电压可被控制器测量,当测量得到无外部电压输入时,控制器自动切换到遥控面板模式。485总线接口用于和其他子系统通信。

图1 多功能控制器硬件框图

2 系统移植

STM32F1XX固件库最新版本为V3.5.0.μC/OSIII支持的库文件版本为V2.1.0.为了μC/OS-III能够在最新的固件库上运行,首先用新固件库替换原有固件库代码并改变入口头文件名,然后有两处代码需要作修改。一是芯片时钟初始化函数,函数名为“BSP_Init”,修改为:

二是操作系统时钟初始化函数,函数名为“OS_CPU_SysTickInit”,修改为:

这两处都是因为原有固件库需要多条语句才能实现时钟初始化,新版本提供专门的初始化函数。

3 驱动编写

3.1 键盘驱动的编写

μC/OS-III具有任务信号量的功能,该信号量随着任务的创建而创建。键盘驱动有键盘扫描任务实现,按键触发外部中断,外部中断发送任务信号量到键盘扫描任务,键盘扫描任务扫描键盘并把键值保持在全局变量中。代码如下:

3.2 液晶显示器printf函数

液晶显示器一般是输入一个字符的编码和位置然后显示出来,不能实现字符串格式化显示。实现printf,首先使用格式化函数“vsnprintf”得到格式化后的字符串,然后该字符串被打印到屏幕上。具体函数如下:



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32的窗口看门狗