当前位置: 首页 > wzjs >正文

多个域名绑定同一个网站2023网站分享

多个域名绑定同一个网站,2023网站分享,功能型网站案例,html编辑器怎么导入图片在 RTX5(Keil RTX5 实时操作系统) 中,中断服务程序(ISR) 可以调用部分 线程安全(ISR Callable) 的 API 函数,但必须遵循 非阻塞、无优先级反转 的原则。以下是 RTX5 允许在中断中调用…

RTX5(Keil RTX5 实时操作系统) 中,中断服务程序(ISR) 可以调用部分 线程安全(ISR Callable) 的 API 函数,但必须遵循 非阻塞、无优先级反转 的原则。以下是 RTX5 允许在中断中调用的 API 列表(基于 CMSIS-RTOS2 规范):


✅ RTX5 中断中可安全调用的 API

1. 线程管理(Thread Management)

API 函数功能是否可中断调用
osThreadFlagsSet向指定线程发送标志位(用于中断→任务通信)可以
osThreadResume恢复被挂起的线程可以

不可调用osThreadNewosThreadTerminateosThreadSuspend(可能阻塞或影响调度)。


2. 事件标志(Event Flags)

API 函数功能是否可中断调用
osEventFlagsSet设置事件标志(任务可等待)可以
osEventFlagsClear清除事件标志可以

不可调用osEventFlagsWait(会阻塞,只能在任务中调用)。


3. 信号量(Semaphore)

API 函数功能是否可中断调用
osSemaphoreRelease释放信号量(任务可获取)可以
osSemaphoreAcquire获取信号量(不可在中断调用,会阻塞不可以

不可调用osSemaphoreNewosSemaphoreDelete(可能涉及内存分配)。


4. 消息队列(Message Queue)

API 函数功能是否可中断调用
osMessageQueuePut发送消息(非阻塞模式)可以
osMessageQueueGet接收消息(仅限超时=0 时可用⚠️ 部分可调用(仅 timeout=0 时)

不可调用osMessageQueueNewosMessageQueueDelete(可能涉及内存分配)。


5. 内存池(Memory Pool)

API 函数功能是否可中断调用
osMemoryPoolAlloc分配内存(仅限 timeout=0 时可用⚠️ 部分可调用(仅 timeout=0 时)
osMemoryPoolFree释放内存可以

不可调用osMemoryPoolNewosMemoryPoolDelete(可能涉及内存分配)。


6. 定时器(Timer)

API 函数功能是否可中断调用
osTimerStart启动定时器可以
osTimerStop停止定时器可以
osTimerDelete删除定时器不可以(可能涉及内存释放)

不可调用osTimerNew(可能涉及内存分配)。


7. 互斥锁(Mutex) & 递归互斥锁(Recursive Mutex)

API 函数功能是否可中断调用
osMutexRelease释放互斥锁(任务可获取)可以
osMutexAcquire获取互斥锁(不可在中断调用,会阻塞不可以
osRecursiveMutexRelease释放递归互斥锁可以
osRecursiveMutexAcquire获取递归互斥锁(不可在中断调用不可以

不可调用osMutexNewosMutexDelete(可能涉及内存分配)。


❌ RTX5 中断中不可调用的 API

以下 API 绝对不能在中断中调用(会导致系统崩溃或未定义行为):

  • 任何阻塞操作(如 osDelayosSemaphoreAcquireosMutexAcquireosEventFlagsWaitosMessageQueueGet 带超时)。
  • 动态内存分配/释放(如 osThreadNewosTimerNewosMutexNewosMemoryPoolNew)。
  • 线程挂起/删除(如 osThreadSuspendosThreadTerminate)。
  • 系统初始化/关闭(如 osKernelInitializeosKernelStartosKernelLock)。

✅ 中断与任务通信的最佳实践

1. 使用 osThreadFlagsSet(推荐)

// 中断中(非阻塞)
osThreadFlagsSet(task_id, 0x01);  // 向任务发送标志位// 任务中(等待标志位)
uint32_t flags = osThreadFlagsWait(0x01, osFlagsWaitAny, osWaitForever);

2. 使用 osSemaphoreRelease

// 中断中(非阻塞)
osSemaphoreRelease(mySemaphore);  // 释放信号量// 任务中(等待信号量)
osSemaphoreAcquire(mySemaphore, osWaitForever);  // 阻塞等待

3. 使用 osMessageQueuePut

// 中断中(非阻塞)
osMessageQueuePut(myQueue, &data, 0, 0);  // 发送消息(不阻塞)// 任务中(接收消息)
osMessageQueueGet(myQueue, &data, NULL, osWaitForever);  // 阻塞等待

📌 总结

API 类型是否可中断调用备注
osThreadFlagsSet推荐用于中断→任务通信
osSemaphoreRelease任务可 osSemaphoreAcquire 等待
osMessageQueuePut任务可 osMessageQueueGet 等待
osMemoryPoolFree释放内存
osEventFlagsSet设置事件标志
osTimerStart / osTimerStop控制定时器
osMutexRelease释放互斥锁
任何阻塞 APIosDelayosSemaphoreAcquire
动态创建/删除 APIosThreadNewosTimerNew

关键规则

  1. 中断中只能调用非阻塞 API
  2. 避免在中断中分配/释放内存(除非使用静态分配)。
  3. 优先使用 osThreadFlagsSet 或信号量进行中断→任务通信

参考官方文档:https://arm-software.github.io/CMSIS_5/RTOS2/html/group__CMSIS__RTOS__Definitions.html

http://www.dtcms.com/wzjs/157206.html

相关文章:

  • 广州仿网站营销网站建设免费
  • 公司网站建设的好处太原seo全网营销
  • 基于开源框架的网站开发关键词挖掘站网
  • 怎么做动态网站视频怎么自己做网站推广
  • 专业做app下载网站哪里有网络推广
  • 常州做网站价格360搜索关键词优化软件
  • 建设现金分期网站怎样制作属于自己的网站
  • 网站建设域名跳转博客宁波网络推广联系方式
  • 外国炫酷网站设计刚开的店铺怎么做推广
  • 搬家公司网站模板网站优化的方式有哪些
  • 网站别人能打开我打不开长尾词seo排名优化
  • 乌尔禾区做网站哪里好谷歌搜索网址
  • 网站制作怎么把网站交付百度网络科技有限公司
  • 淘宝客网站用什么软件做视频网站推广
  • 阜康网站建设安徽seo推广
  • 部委网站建设通知付费推广有几种方式
  • 织梦cms视频网站建设兰州网络seo公司
  • 佛山网站建设正规公司系统设置友情链接有什么作用
  • 高端品牌网站建设内容快速刷排名seo软件
  • 做推广哪个网站好seo网站是什么意思
  • 三明市住房与建设局网站百度教育官网
  • html5 网站开发语言河北seo技术交流
  • 哪些网站可以做调查赚钱百度电脑版
  • 国外的域名注册网站哪个好网站建设的重要性
  • 四平网站公司抖音广告代运营
  • 网站如何做好内链seo外贸公司推广
  • 郑州北环附近网站建设淘宝数据查询
  • 没有网站做淘宝客百度官方免费下载
  • 有哪些做网站的网站深圳seo优化服务商
  • 网站开发实践研究报告搜狗推广开户