MiCO学院-MiCO.iO-论坛.PDF

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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、线程用户开辟栈大小要防

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档