- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MiCO学院-MiCO.iO-论坛
MiCO 学院
Jacky 老师
本节主题- OS
1、MiCO OS :线程、消息队列、信号量
2、MiCoder下代码演示
01 OS
线程
1、线程也叫任务 ,简单说 ,线程是程序的执行路径 ,多线程的意思是一个程序可以
有多条执行路径 ,并且多条路径的执行都同时在并发运行的。在MCU中使用多线程
编程主要的目的是为了统一协调各个任务 ,优化CPU时间和系统的资源的分配 ,提
高资源利用率。
线程-API
1、创建一个线程
OSStatus mico_ rtos_create_thread( mico_thread_t* thread, uint8_t priority, const
char* name, mico_thread_function_t function, uint32_t stack_size, uint32_t arg );
2、删除一个线程
OSStatus mico_ rtos_delete_thread( mico_thread_t* thread );
信号量、消息队列、互斥
1、信号量 ,内部是一个计数器 ,表示线程间的一种访问关系。信号量分为0/ 1型二
进制信号量和0/ N型信号量 ,在MiCO应用程序中 ,我们常用0/ 1型二进制信号量。
2、消息队列可以实现线程间的通信。
3、多线程共享数据间需要同步保护 ,这是所有操作系统永恒的话题。
应用场合 :串口操作 ,读写flash操作等。比如 :互斥锁。
信号量、消息队列、互斥 -API
1、初始化一个信号量
OSStatus mico_ rtos_init_semaphore( mico_semaphore_t* semaphore, int count );
2、获取一个信号量
OSStatus mico_ rtos_get_semaphore( mico_semaphore_t* semaphore, uint32_t timeout_ ms );
3、释放一个信号量
int mico_ rtos_set_semaphore( mico_semaphore_t* semaphore );
4 、OSStatus mico_ rtos_init_queue( mico_queue_t* queue, const char* name, uint32_t
message_size, uint32_t number_of_ messages );
5、OSStatus mico_ rtos_ push_to_queue( mico_queue_t* queue, void* message, uint32_t
timeout_ ms );
6、OSStatus mico_ rtos_ pop_from_queue( mico_queue_t* queue, void* message, uint32_t
timeout_ ms );
7、初始化一把互斥锁,上锁,解锁
mico_ rtos_init_ mutex mico_ rtos_ lock_ mutex mico_ rtos_unlock_ mutex
02 代码演示
按键和中断
1、MiCOKit-3165的扩展板上有2个按键KEY1和KEY2 ,分别对应MICO_GPIO_ 19和
MICO_GPIO_ 16。
按键和中断-API
1、GPIO初始化
OSStatus MicoGpioInitialize( mico_gpio_t gpio, mico_gpio_config_t configuration );
2、GPIO允许中断设置
OSStatus MicoGpioEnableIRQ( mico_gpio_t gpio, mico_gpio_irq_trigger_t trigger,
mico_gpio_irq_ handler_t handler, void* arg );
3、获取GPIO 口状态
bool MicoGpioInputGet( mico_gpio_t gpio );
本节总结
1、key按键先找对应哪个GPIO口 ,然后设置中断ISR ,自定义使用的
时候可能要考虑短按、长按及防抖动操作。中断ISR应避免使用耗时较
长的函数如打印 ,延时等。
2、MiCO的OS机制跟一般的OS相差无几 ,多练习即可。
3、线程用户开辟栈大小要防
您可能关注的文档
- C语言电子课件.ppt
- C语言程序设计(第三版) - 祁阳县职业中专.PPT
- D5100中文规格书-得倍电子.PDF
- da Vinci Jr 10 3in1 使用手册.PDF
- Datasheetform,2pages-东莞市龙海化工有限公司.doc
- DB3302T 065-2008 醉泥螺生产操作规范.DOC
- D10-LS总轴传动辊道机1-8-输送机.PDF
- DA转换器的基本原理及分类T型电阻网络DA转换器.ppt
- Datasheet-VEGATOR121-单通道式分析仪表,用于为816mA.PDF
- DCDC模块电源的反馈电路和设计方法反馈电路.ppt
- 中国行业标准 GM/T 0126-2023HTML密码应用置标语法.pdf
- 《JJF 2121-2024恒转速源校准规范》.pdf
- 餐饮服务中20条处理要点.docx
- 《GM/T 0011-2023可信计算 可信密码支撑平台功能与接口规范》.pdf
- 《JJF 2134-2024旋转流变仪校准规范》.pdf
- JJF 2121-2024恒转速源校准规范.pdf
- 计量规程规范 JJF 2121-2024恒转速源校准规范.pdf
- 《JJF 2118-2024压力式六氟化硫气体密度控制器校验仪校准规范》.pdf
- JJF 2134-2024旋转流变仪校准规范.pdf
- 计量规程规范 JJF 2134-2024旋转流变仪校准规范.pdf
文档评论(0)