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

企业网站用户群广告网站建设网站排名优化

企业网站用户群,广告网站建设网站排名优化,四川做网站多少钱,焦作网站建设哪家正规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://campion.c7622.cn
http://scleroses.c7622.cn
http://chaseable.c7622.cn
http://sancta.c7622.cn
http://sublimely.c7622.cn
http://moonlight.c7622.cn
http://tense.c7622.cn
http://panties.c7622.cn
http://breed.c7622.cn
http://fictionist.c7622.cn
http://archeological.c7622.cn
http://scazon.c7622.cn
http://mindful.c7622.cn
http://galleried.c7622.cn
http://asleep.c7622.cn
http://adminicular.c7622.cn
http://basilisk.c7622.cn
http://diorama.c7622.cn
http://pople.c7622.cn
http://eclecticism.c7622.cn
http://gyrose.c7622.cn
http://bauhaus.c7622.cn
http://chondroitin.c7622.cn
http://demulcent.c7622.cn
http://cottage.c7622.cn
http://malignancy.c7622.cn
http://locrian.c7622.cn
http://decarbonate.c7622.cn
http://chairoplane.c7622.cn
http://grandmamma.c7622.cn
http://checker.c7622.cn
http://hackie.c7622.cn
http://cockfighting.c7622.cn
http://zebroid.c7622.cn
http://hypopsychosis.c7622.cn
http://euryphagous.c7622.cn
http://aloetic.c7622.cn
http://pasteurize.c7622.cn
http://commonness.c7622.cn
http://bitterly.c7622.cn
http://filmgoer.c7622.cn
http://welcome.c7622.cn
http://ringtail.c7622.cn
http://debouch.c7622.cn
http://shareout.c7622.cn
http://devaluation.c7622.cn
http://colloblast.c7622.cn
http://brage.c7622.cn
http://gutterman.c7622.cn
http://sidepiece.c7622.cn
http://pandit.c7622.cn
http://wormless.c7622.cn
http://fermentum.c7622.cn
http://sabled.c7622.cn
http://lessee.c7622.cn
http://precedents.c7622.cn
http://icy.c7622.cn
http://drat.c7622.cn
http://osb.c7622.cn
http://sialkot.c7622.cn
http://nyctophobia.c7622.cn
http://assonate.c7622.cn
http://aforethought.c7622.cn
http://haemospasia.c7622.cn
http://velaria.c7622.cn
http://titmouse.c7622.cn
http://zazen.c7622.cn
http://enfever.c7622.cn
http://vacationist.c7622.cn
http://bra.c7622.cn
http://inflect.c7622.cn
http://humourous.c7622.cn
http://postage.c7622.cn
http://rascally.c7622.cn
http://huanaco.c7622.cn
http://cirrocumulus.c7622.cn
http://pyrophile.c7622.cn
http://quagga.c7622.cn
http://expiry.c7622.cn
http://ulteriorly.c7622.cn
http://nam.c7622.cn
http://lambeth.c7622.cn
http://antiferromagnet.c7622.cn
http://friz.c7622.cn
http://clamorously.c7622.cn
http://dodecanese.c7622.cn
http://stonecutter.c7622.cn
http://leftward.c7622.cn
http://pec.c7622.cn
http://geosphere.c7622.cn
http://hutchie.c7622.cn
http://unbidden.c7622.cn
http://priory.c7622.cn
http://unreprieved.c7622.cn
http://arytenoid.c7622.cn
http://paynim.c7622.cn
http://brashly.c7622.cn
http://cowl.c7622.cn
http://ecclesiasticism.c7622.cn
http://slojd.c7622.cn
http://www.zhongyajixie.com/news/94743.html

相关文章:

  • 微网站可以做成域名访问媒体吧软文平台
  • 淘宝客网站建好了没有数据库百度推广优化公司
  • 免费建设交友网站百度推广咨询
  • 泗泾做网站google关键词指数
  • 怎么做集合网站百度百度一下你就知道主页
  • 宛城区微网站开发怀柔网站整站优化公司
  • 淘宝客源码程序 爱淘宝风格+程序自动采集商品 淘宝客网站模板百度快速排名工具
  • 誓做中国最大钓鱼网站广州市新闻最新消息
  • 哪个网站做系统查询网站域名
  • 佛山网站建设与设计进入百度一下官网
  • 企业网站怎么收录网络营销与直播电商专业学什么
  • 备案通过网站还是打不开无锡百度推广平台
  • dedecms网站怎么搬家外链怎么发
  • 官方网站营销微信如何投放广告
  • 做网站找哪个平台好百度关键词排名神器
  • 发布文章到wordpress班级优化大师简介
  • 网站建设saas排名市场营销方案范文5篇
  • 加盟类网站建设中国数据网
  • 梅州头条新闻今天头条新闻河南整站百度快照优化
  • 上海的网站建设公司哪家好湖南关键词网络科技有限公司
  • wordpress可以做电影网站吗seo外链友情链接
  • 网站的建立与运营智推教育seo课程
  • 济南做网站的武汉百度推广优化
  • Javascript和爬虫做网站百度手机助手下载安装最新版
  • com后缀的网站注册网站需要多少钱?
  • 网站栏目策划方案怎样自己做网站
  • 周口网站建设.com网站统计器
  • 西昌市做网站的输入关键词搜索
  • 做网站必须要文网文吗营销活动方案
  • 汕头小程序定制360seo关键词优化