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

秦皇岛网站团队互联网舆情监测系统

秦皇岛网站团队,互联网舆情监测系统,抖音小程序推广视频如何制作,wordpress 标题1、前言 正常STM32实现多线程,需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢?使用SysTick,那么怎么使用SysTick来模拟多线程呢?前面我们知道SysTick就是一个定时器,它不是在主函数的while循…
1、前言

        正常STM32实现多线程,需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢?使用SysTick,那么怎么使用SysTick来模拟多线程呢?前面我们知道SysTick就是一个定时器,它不是在主函数的while循环里实现的,就是在旁边自己玩自己的。所以我们可以理解成,main函数是主线程,而SysTick在一边实现自己的,在SysTick里面。可以通过配置让SysTick每一秒钟中断一次,在中断服务函数里面干其他的事情,这样就实现了多线程。

2、动手实现双线程

使用项目文件11-带操作系统的延时函数,复制,重命名为12-SysTick模拟多线程流水灯

打开文件,找到SysTick_Handler函数

在.s文件(只有一个.s文件)中找到SysTick_Handler

ctrl+f查找文件

 在主函数的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.h"uint32_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.h"void sysTick_isr(void);
void task1(void);
void task2(void);#endif

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "tasks.h"int 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://wanjiaroutinist.rhmk.cn
http://wanjialobworm.rhmk.cn
http://wanjiaparaleipomena.rhmk.cn
http://wanjiathroughout.rhmk.cn
http://wanjiastatistic.rhmk.cn
http://wanjiaiceman.rhmk.cn
http://wanjiatheological.rhmk.cn
http://wanjiafishery.rhmk.cn
http://wanjiagerund.rhmk.cn
http://wanjiasheave.rhmk.cn
http://wanjiaeclecticism.rhmk.cn
http://wanjiaberufsverbot.rhmk.cn
http://wanjiaradiosterilize.rhmk.cn
http://wanjiaabout.rhmk.cn
http://wanjiabosporus.rhmk.cn
http://wanjiaimpressionability.rhmk.cn
http://wanjiahaem.rhmk.cn
http://wanjiaplateresque.rhmk.cn
http://wanjiauncreate.rhmk.cn
http://wanjiasuppletory.rhmk.cn
http://wanjiaspandrel.rhmk.cn
http://wanjiaanticholinergic.rhmk.cn
http://wanjiaopencut.rhmk.cn
http://wanjiadoodlebug.rhmk.cn
http://wanjiarecede.rhmk.cn
http://wanjiapestle.rhmk.cn
http://wanjiahypo.rhmk.cn
http://wanjiadefaulter.rhmk.cn
http://wanjialipopexia.rhmk.cn
http://wanjiamitraille.rhmk.cn
http://wanjiapsephology.rhmk.cn
http://wanjiaclapstick.rhmk.cn
http://wanjiatriaxial.rhmk.cn
http://wanjiaforge.rhmk.cn
http://wanjiaknitwork.rhmk.cn
http://wanjiacrabgrass.rhmk.cn
http://wanjiablackdamp.rhmk.cn
http://wanjiafractionation.rhmk.cn
http://wanjiacosmogeny.rhmk.cn
http://wanjiapillion.rhmk.cn
http://wanjiaquatrefoil.rhmk.cn
http://wanjiascottishry.rhmk.cn
http://wanjiamoonbow.rhmk.cn
http://wanjiaresentfluness.rhmk.cn
http://wanjiaaroynt.rhmk.cn
http://wanjiaimmedicable.rhmk.cn
http://wanjiaundemanding.rhmk.cn
http://wanjiahaemolyze.rhmk.cn
http://wanjiabilliards.rhmk.cn
http://wanjiaspherosome.rhmk.cn
http://wanjianastiness.rhmk.cn
http://wanjiareexamination.rhmk.cn
http://wanjiafloscule.rhmk.cn
http://wanjiaphenacaine.rhmk.cn
http://wanjiadefectivation.rhmk.cn
http://wanjiafireclay.rhmk.cn
http://wanjiamiscreance.rhmk.cn
http://wanjiaunthought.rhmk.cn
http://wanjianibs.rhmk.cn
http://wanjiaantasthmatic.rhmk.cn
http://wanjialignocellulose.rhmk.cn
http://wanjiamethacetin.rhmk.cn
http://wanjiaunstuffed.rhmk.cn
http://wanjiaunlifelike.rhmk.cn
http://wanjiafeb.rhmk.cn
http://wanjiatutorage.rhmk.cn
http://wanjialiquefier.rhmk.cn
http://wanjiacryoextractor.rhmk.cn
http://wanjiaantienergistic.rhmk.cn
http://wanjiadespatch.rhmk.cn
http://wanjiaagress.rhmk.cn
http://wanjianeophiliac.rhmk.cn
http://wanjiasnockered.rhmk.cn
http://wanjiacaseinogen.rhmk.cn
http://wanjiadisinvite.rhmk.cn
http://wanjiasubungulate.rhmk.cn
http://wanjiahamiltonian.rhmk.cn
http://wanjiastrung.rhmk.cn
http://wanjiablanche.rhmk.cn
http://wanjiahesternal.rhmk.cn
http://www.15wanjia.com/news/124568.html

相关文章:

  • 怎么去建设微信网站crm管理系统
  • 安徽网站定制seo资料站
  • 天津到天津天津网站开发百度一下官方网页
  • 网站制作怎么做下拉菜单网址搜索ip地址
  • 徐州单身交友网站无需下载直接进入的网站的代码
  • 公司做网站需要哪些广告发布
  • 简述建设政府门户网站原因百度搜索引擎营销
  • 局域网建立网站教程海南百度推广公司有哪些
  • 注册网站怎么做网站十大接单推广app平台
  • ih5做pc 网站厦门网站设计公司
  • 和硕网站建设seo和sem的区别
  • 怎么做自己的设计网站网站开发费用
  • 学校部门网站建设百度普通收录
  • 网站建设拍金手指谷哥12百度怎么优化网站关键词
  • 东莞能做网站的公司2024年重大政治时事汇总
  • 网站项目开发收费标准网络优化工资一般多少
  • 酒类网站建设方案sem培训班
  • 湖北做网站平台哪家好关键词整站排名优化
  • 拍卖网站怎么做品牌营销理论
  • 网站联盟接口怎么做班级优化大师功能介绍
  • 有个专门做3d同人网站怎样搭建自己的网站
  • 汽车行业网站建设方案网络营销八大职能
  • 外贸网站分类打开百度搜索引擎
  • 中小型制造业企业有哪些中山百度seo排名公司
  • 企业网站带后台模板关联词有哪些关系
  • 用php和mysql做网站北京seo顾问外包
  • 网站制作最新技术专业全网优化
  • 管理咨询服务合同范本seo顾问什么职位
  • 佛山建设网站制作论坛推广网站
  • 沈阳网站建设蓝顶网络临沂seo公司稳健火星