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

网站建设需要购买什么长沙建设品牌网站

网站建设需要购买什么,长沙建设品牌网站,做小程序公司哪家好,apache安装WordPress目录 前言#xff1a; 一、中断优先级设置 二、中断相关寄存器#xff08;STM32-Cortex M3#xff09; 三、临界段代码保护 四、任务调度器的挂起和恢复 总结#xff1a; 前言#xff1a; 博客笔记根据正点原子视频教程编辑#xff0c;仅供学习交流使用#xff0…目录 前言 一、中断优先级设置 二、中断相关寄存器STM32-Cortex M3 三、临界段代码保护 四、任务调度器的挂起和恢复 总结 前言 博客笔记根据正点原子视频教程编辑仅供学习交流使用 一、中断优先级设置 ①中断概念回顾 让CPU打断正常运行的程序转而去处理紧急的事件程序就叫中断。可简单概括为以下三步 ② 优先级分组设置 ARM Cortex-M 使用了 8 位宽的寄存器256级来配置中断的优先等级这个寄存器就是中断优先级配置寄存器。但STM32只用了中断优先级配置寄存器的高4位 [7 : 4]所以STM32提供了最大16级的中断优先等级。 STM32 的中断优先级可以分为抢占优先级和子优先级。抢占优先级 抢占优先级高的中断可以打断正在执行但抢占优先级低的中断。子优先级当同时发生具有相同抢占优先级的两个中断时子优先级数值小的优先执行。中断优先级数值越小越优先 优先级的设置有5 种分配方式对应着中断优先级分组的 5 个组通过在在HAL_Init中调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4即可完成设置FreeRTOS中常用NVIC_PriorityGroup_4 注意低于5级优先级的中断里才可调用FreeRTOS的API函数。在FreeRTOS中常把4位都设置为抢占优先级即NVIC_PriorityGroup_4。中断优先级数值越小越优先任务优先级数值越大越优先。 二、中断相关寄存器STM32-Cortex M3 ①三个系统中断优先级配置寄存器 一个寄存器是32位的它的地址是这一段区域的首地址8位要设置一个寄存器区域的非首地址如PendSV和SysTick通过首地址偏移bit即可。 SHPR1寄存器地址0xE000ED1 SHPR2寄存器地址0xE000ED1C SHPR3寄存器地址0xE000ED20 注意PendSV和SysTick设置最低优先级保证系统任务切换不会阻塞系统其他中断的响应。即中断可打断任务但任务不可打断中断。 ②三个中断屏蔽寄存器 注意FreeRTOS利用的BASEPRI这个寄存器完成对中断的管理。该寄存器屏蔽优先级低于某个阈值或优先级号大于某个值的中断如BASEPRI设置为0x50配置优先级只用到低4位只用到高四位[7:4]所以这里写的是5向左偏移4位的值代表中断优先级在5~15内的均被屏蔽0~4的中断优先级正常执行。当BASEPRI设置为0不关闭任何中断不是屏蔽所有中断的意思。 关闭中断优先级在5-15的中断程序示例 #define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI() static portFORCE_INLINE void vPortRaiseBASEPRI( void ) { uint32_t ulNewBASEPRI configMAX_SYSCALL_INTERRUPT_PRIORITY; __asm {msr basepri, ulNewBASEPRI dsb isb} } #define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY (8 - configPRIO_BITS) ) /*STM32中断优先级只用高4位配置偏移4位*/ #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 /* FreeRTOS可管理的最高中断优先级 也即把BASEPRI设置为0x50*/ FreeRTOS说“我可以中断你可以让你用我的API函数我不能中断你你也不能用我的API函数” 注意中断服务函数的优先级需在FreeRTOS所管理的范围内中断服务函数里边需调用FreeRTOS的API函数必须使用带“FromISR”后缀的函数。 开中断代码示例即BASEPRI设置为0 #define portENABLE_INTERRUPTS() vPortSetBASEPRI( 0 ) static portFORCE_INLINE void vPortSetBASEPRI( uint32_t ulBASEPRI ) { __asm{msr basepri, ulBASEPRI} }三、临界段代码保护 临界段代码也叫做临界区是指那些必须完整运行不能被打断的代码段。 使用场合①外设需严格按照时序初始化的外设如I2C、SPI等。②系统在自身需求。③用户的某些需求。 能够打断当前程序运行的中断、任务调度PendSV相关。要想程序不被打断关中断即可指FreeRTOS所管辖的最高级别中断因为PendSV是与任务切换有关的一个中断被设置成了最低优先级所以关中断后PendSV与任务调度器有关也一定不会响应。 FreeRTOS 在进入临界段代码的时候需要关闭中断当处理完临界段代码以后再打开中断 无论是任务级还是中断级临界区本质都是关中断代码是成对使用的且支持嵌套可尽量保持临界段耗时短 //任务级临界区调用格式示例 taskENTER_CRITICAL() ; {… … /* 临界区 */ } taskEXIT_CRITICAL() ;//中断级临界区调用格式示例这段写在中断服务函数里 uint32_t save_status; save_status taskENTER_CRITICAL_FROM_ISR() {… … /* 临界区 */ } taskEXIT_CRITICAL_FROM_ISR(save_status ); 四、任务调度器的挂起和恢复 调用挂起任务调度器的函数时不需要关闭中断仅仅是防止了任务之间的资源争夺中断照样可以直接响应。 挂起调度器的方式适用于临界区位于任务与任务之间既不用去延时中断又可以做到临界区的安全。 vTaskSuspendAll() ; {… … /* 内容 */ } xTaskResumeAll() ; 总结 实时操作系统是嵌入式学习的进阶内容掌握好在面试时会有巨大优势 往期精彩 电机应用控制——直流无刷电机 OpenCV机器视觉系列专栏 C语言进阶
http://www.hkea.cn/news/14343181/

相关文章:

  • 网站建设维护费怎么说如何查看一个网站的所有二级域名
  • 智趣游戏型网站开发生产管理软件系统
  • 怎么修改别人做的网站在线设计平台代理加盟
  • 吕子乔做网站一段台词免费网站建设支持ftp
  • 网站制作怎么入门地产网
  • 网站设计学什么专业有限公司和有限责任公司
  • 网站主体变更邯郸企业做网站方案
  • 帝国网站系统做专题做女装的看哪个网站好
  • 郑州网站建设哪家专业Ext做网站
  • 做购物网站哪家公司好企业网站报价模板
  • 织梦电影网站模板推广方案
  • 如何做 网站的seo上海设计公司官网
  • 如何做网站开发手机网站后台
  • 泉州手机网站建设seo关键词快速排名
  • 长春建设局网站做一个像qq空间的网站
  • 网站建设广告费 科目电子商务网站设计原理名词解释
  • 优质的低价网站建设唐山网站制作企业
  • 无棣做网站导购网站免费推广
  • 网站建设的结论设计制作中国第一架飞机
  • 标题正文型网站百度指数搜索榜度指数
  • 网站集群建设seo关键词优化教程
  • 新区网站建设seo公司排名教程
  • 中国建设购物网站辽宁建设工程信息网报名步骤
  • 音乐门户网站模板郑州做茶叶的网站
  • 做问卷调查的网站有哪些内容照片做视频的网站
  • 抢购网站建设各大搜索引擎网址
  • 三层架构做网站还是系统室内设计优秀案例网站
  • 天猫入驻如何优化搜索引擎的搜索功能
  • 东营建设信息网站电话东西湖区建设局网站
  • django网站开发网站设计ps做效果图过程