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

现在一般做网站用什么技术甘肃省最新出行通告

现在一般做网站用什么技术,甘肃省最新出行通告,微小店和微商城区别,网站图片怎么做超链接1、前言 正常STM32实现多线程#xff0c;需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢#xff1f;使用SysTick#xff0c;那么怎么使用SysTick来模拟多线程呢#xff1f;前面我们知道SysTick就是一个定时器#xff0c;它不是在主函数的while循…1、前言 正常STM32实现多线程需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢使用SysTick那么怎么使用SysTick来模拟多线程呢前面我们知道SysTick就是一个定时器它不是在主函数的while循环里实现的就是在旁边自己玩自己的。所以我们可以理解成main函数是主线程而SysTick在一边实现自己的在SysTick里面。可以通过配置让SysTick每一秒钟中断一次在中断服务函数里面干其他的事情这样就实现了多线程。 2、动手实现双线程 使用项目文件11-带操作系统的延时函数复制重命名为12-SysTick模拟多线程流水灯 打开文件找到SysTick_Handler函数 在.s文件只有一个.s文件中找到SysTick_Handler ctrlf查找文件 在主函数的HAL_Init();函数中 可以看到HAL_IncTick();函数设置了一个1ms的中断所以我们不需要配置额外的配置了只需要在中断服务函数中做自己想要做的事就可以了。 现在在主函数中在流水灯中是每隔500ms换一次led1和led2的闪烁情况现在我们换一下让led1每隔1000ms闪烁一次led2每隔500ms闪烁一次主函数实现led2的闪烁情况SysTick实现led1的闪烁情况。 主函数情况如下 这里的定义和头文件都是为了方便才放到这里的 这样就实现了上述描述的实验 还可以都在HAL_IncTick();函数中实现先把主函数中的实现给注释掉具体代码如下 3、遇到多线程 遇到很多条线程的时候我们不可能每一条都那么写会显得很冗余 在该目录文件下新建文件夹tasks,和相应的.c .h文件 用来存放所有的线程将文件加载进工程文件中 在.c文件中引入#include tasks.h 编译搞出.h文件打开.h文件 编译-下载运行结果一致 但是没有完接着做进一步的改装 这是一个中断服务函数现在只是点亮led灯不算复杂未来我们要使用SysTick的时候不可以在这里很复杂的事情不可以在这里延时很久的时间。 让sysTick_isr();函数只起到一个计数的功能并不在这个函数里面延时现在点灯操作还没有实现延迟定义两个flag用来标志是否达到指定的数目如果达到就在另一个线程函数中实现点灯未来实现延迟功能。 代码如下 tasks.c #include tasks.h #include led.huint32_t task1_cnt 0; //定义一个变量用来计数 uint32_t task2_cnt 0; //定义一个变量用来计数 uint8_t task1_flag 0; uint8_t task2_flag 0;void sysTick_isr(void) {if(task1_cnt 1000)task1_cnt;else{task1_flag 1;task1_cnt 0;}if(task2_cnt 500)task2_cnt;else{task2_flag 1;task2_cnt 0;}} void task1(void) {if(task1_flag 0)return;task1_flag 0;//置位led1_toggle();} void task2(void) {if(task2_flag 0)return;task2_flag 0;led2_toggle();}tasks.h #ifndef __TASKS_H__ #define __TASKS_H__#include sys.hvoid sysTick_isr(void); void task1(void); void task2(void);#endif main.c #include sys.h #include delay.h #include led.h #include tasks.hint main(void) {HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init(); /* 初始化LED灯 */while(1){//一直在while循环中不断的重复执行task()函数//task()函数只有在满足对应条件的时候才会点灯否则不点灯白执行task1();task2();} } 代码分析 主函数不断在while中调用task1(); 和task2();函数当task1(); 和task2();函数中标志位满足相应的条件就会执行点灯操作否则不满足不执行直接return返回对于标志位的操作是看是否满足其数量如果到指定数目则标志位为1否则依旧为0。
http://www.w-s-a.com/news/778105/

相关文章:

  • 足球直播网站怎么做crm系统介绍
  • 株洲网站建设联系方式东莞凤岗网站制作
  • 小纯洁网站开发如何注册域名
  • 网上做试卷的网站如何把刚做的网站被百度抓取到
  • 滕州网站建wordpress用户中心按钮不弹出
  • 清远新闻最新消息福建seo搜索引擎优化
  • 凡客建站网微信网站怎么做的
  • 网站建设费怎么写会计科目行业网站建设公司
  • 网站里的友情链接网站建设个人简历的网页
  • 佛山自助建站软件湖南seo优化推荐
  • 免费微信微网站模板下载不了优化人员配置
  • wordpress 导航网站主题画流程图的网站
  • 皮卡剧网站怎样做排名网
  • 网站开发 兼职哪个网站是做安全教育
  • 商品展示类网站怎么用群晖nas做网站
  • 长腿蜘蛛wordpresssem优化推广
  • 中国铁路建设监理协会官方网站深圳福田区怎么样
  • 互联网网站开发发展wordpress文章自定义栏目
  • 众筹网站平台建设工信部网站备案系统
  • 网站301重定向代码wordpress 加子目录
  • 淄博网站制作优化推广asp做学生信息网站
  • 海口招商建设有限公司网站淮安哪有专业做网站的公司
  • 喀什哪有做网站的国内正规seo网络推广
  • 网站设计初步规划公司网页打不开是什么原因
  • 深圳企业网站建设推广服务php做的商城网站设计论文
  • 韩雪冬网站手机网站开发 宽度
  • 奉贤专业做网站新手怎么做企业网站
  • 做网站用哪几个端口 比较好手机号网站源码
  • 手机免费代理ip网站那个旅游网站做攻略最好
  • 西安做网站找哪家公司好苏州专业网站建设开发