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

企业网站多大空间够用井研移动网站建设

企业网站多大空间够用,井研移动网站建设,零基础考二建有多难,做网站的时候怎么照片路径STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现#xff08;通用#xff09;4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序#xff0c;由于网上找到的驱动方法良莠不齐#xff0c;笔者在实现时序过… STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现通用4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序由于网上找到的驱动方法良莠不齐笔者在实现时序过程中也浪费了不少时间。这里就将笔者觉得比较好的几种方式记录一下方便后续使用也可以作为参考。 一、裸机实现方式 在STM32的裸机程序中实现微秒延时比较简单通过SysTick计时即可。关于SysTick的相关知识可以站内搜索这里就不再过多赘述了相关的delay_us函数参考了正点原子例程中的实现方式 // 注意:nus的值,不要大于798915us(最大值即2^24/fac_us {fac_us21}) void delay_us(uint32_t nus) {uint32_t temp;SysTick-LOAD nus * fac_us; // 时间加载fac_us与时钟频率有关例如168Mhz时// fac_us168168/168M1usSysTick-VAL 0x00; // 清空计数器SysTick-CTRL | SysTick_CTRL_ENABLE_Msk; // 开始倒数do{temp SysTick-CTRL; // 读取控制及状态寄存器的值} while ((temp 0x01) !(temp (1 16))); // 等待时间到达使能且位16为0未计到0SysTick-CTRL ~SysTick_CTRL_ENABLE_Msk; // 关闭计数器SysTick-VAL 0X00; // 清空计数器 }步骤 1、根据延时时间和定时器所选时钟频率计算出定时器要计数的时间数值 2、将该数值加载到重装载寄存器中 3、将当前值寄存器清零打开定时器开始计数 4、等待控制及状态寄存器的位16变为1 5、关闭定时器退出。 二、FreeRTOS实现方式 在FreeRTOS中SysTick定时器的重装载值是固定的且定时器是一直在工作的。因此像裸机编程中将时间数值加载到重装载寄存器的方法不再适用。经过多方的查找和修改最终使用的以下的实现方式 #include main.h #include FreeRTOSConfig.hextern void vPortSetupTimerInterrupt( void );void delay_us(uint32_t nus) {uint32_t ticks;uint32_t told, tnow, reload, tcnt 0;if ((0x0001 (SysTick-CTRL)) 0) { // 定时器未工作vPortSetupTimerInterrupt(); // 初始化定时器}reload SysTick-LOAD; // 获取重装载寄存器值ticks nus * (SystemCoreClock / 1000000); // 计数时间值told SysTick-VAL; // 获取当前数值寄存器值开始时数值while (1){tnow SysTick-VAL; // 获取当前数值寄存器值if (tnow ! told) // 当前值不等于开始值说明已在计数{if (tnow told) { // 当前值小于开始数值说明未计到0tcnt told - tnow; // 计数值开始值-当前值} else { // 当前值大于开始数值说明已计到0并重新计数tcnt reload - tnow told; // 计数值重装载值-当前值开始值 已从开始值计到0}told tnow; // 更新开始值if (tcnt ticks) {break; // 时间超过/等于要延迟的时间,则退出.}}} }// SystemCoreClock为系统时钟(system_stmf1xx.c中)通常选择该时钟作为systick定时器时钟根据具体情况更改步骤 1、根据延时时间和定时器所选时钟频率计算出定时器要计数的时间数值 2、获取当前数值寄存器的数值 3、以当前数值为基准开始计数 4、当所计数值等于大于需要延时的时间数值时退出。 注由于笔者使用STM32CubeIDE中通过CMSIS封装后的FreeRTOS API所以需要额外extern引入与初始化定时器相关的API。如果使用原生FreeRTOS API则需要根据情况引入。 三、定时器实现通用 这种方式的优点就是简单且易用直接使用一个闲置定时器分频后即可。在CubeMX中配制定时器笔者选择基本定时器 TIM7预分频PSC设置为(TIM总线时钟 - 1)分频后频率为1MHz即每次计数累加1/1000000秒 1us计数区间65535单次定时最长65535微秒计数模式为up 向上计数是否自动重新加载选disable一次计数满后不再重新计数。 void delay_us(uint16_t nus) {__HAL_TIM_SetCounter(htim7,0);__HAL_TIM_ENABLE(htim7);while(__HAL_TIM_GetCounter(htim7)nus);__HAL_TIM_DISABLE(htim7); }步骤 1、首先对定时器中的计数器进行置0 2、使能定时器 3、循环等待 4、关闭定时器退出 4、总结 由于微秒延时间隔较短所以在FreeRTOS中使用时最好避免内核对该线程进行调度否则调度到其他线程可能要等到下一个时间片才能恢复运行。笔者对这部分还没有仔细了解如有条件最好还是对相关线程添加关闭和恢复线程调度的操作。
http://www.hkea.cn/news/14339460/

相关文章:

  • 图片瀑布流网站源码网站建设中心联系方式
  • 慈利网站建设wordpress中英文版如何
  • 设计网站作品宁波市镇海建设交通局网站首页
  • 模版网站有源代码吗wordpress文章查看量
  • 衡阳公司网站建设com域名查询官网
  • 建网站程序工具英文商城网站模板
  • wap网站如何建设适合个人做的网站有哪些东西吗
  • 网站制作的收费标准邯郸教育网站建设
  • 兰州市城乡建设局网站s104项目有创意的工作室名字大全
  • 关于高校网站建设论文的总结做网站用什么需要好
  • 爱情表白网站制作wordpress文章页名称
  • 一起做网站17广州莱芜求职信息查询
  • 乌兰浩特建设网站推广黄冈软件必备软件
  • 工会网站建设策划书免费注册网站的平台
  • 网站推广方案策划书2000f3322免费域名申请
  • 最便宜网站seo关键词排名软件流量词
  • 外贸营销型网站建站怎样设网站
  • 建设网站具体步骤网站开发遵循
  • 网站建设实例教程 pdfwordpress页面调用文章列表
  • 猎头做单网站国内优秀网站案例
  • 建设一个普通的网站需要多少钱信息服务平台有哪些网站
  • 免费h5模板网站模板高端网站建设费用情况
  • 汕头网站制作公司价格分销体系搭建
  • 哪个网站做招聘海报比较好安阳县崔家桥职业中专
  • 烟台消防建设信息网站制作app需要学什么
  • 移商网站建设搜索引擎推广的基本方法有
  • 微机做网站的软件洛阳百姓网
  • 广安网站建设哪家好网页设计师证书报考条件
  • 电子商务网站建设的规划和实施wordpress插件安装目录
  • 东莞专业网站设计建站公司南充网站建设多少钱