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

网站建设 首选百川互动怎么做移动网站

网站建设 首选百川互动,怎么做移动网站,广东品牌网站设计,环球军事网最新军事新闻最新消息在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同…

在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同时执行几个函数还是很简单的一件事,虽然CPU是单核心的,这就好比是电脑编程中的多线程,这个函数执行1毫秒,那个函数执行1毫秒,就这样不停地切换,由于切换的速度相当的快,给人的感觉就是这几个函数在同时执行。我们编程中难免会遇到这种需要同时运行的函数,所以学习一下FreeRTOS还是很有必要的。

好了,说了这么多,把我今天的结果展示一下吧:

图片中的A0到A3端口的led灯在以不同的频率闪烁。

下面把代码贴出来看看吧:

main.c文件:

#include "stm32f10x.h"                  // Device header
#include "led.h"
#include "freertos.h"
#include "task.h"void Mytask0( void * arg)   //任务0函数
{while(1)                       //所干的事就是死循环{FANZHUAN0;                     //翻转A0端口电平vTaskDelay(40);                //延时40毫秒   }                             //整个函数就是控制A0端口的led灯以40毫秒的间隔不停的闪烁
}void Mytask1( void * arg)       //任务1函数
{while(1){FANZHUAN1;vTaskDelay(140);}                           // 整个函数就是控制A1端口的led灯以140毫秒的间隔不停的闪烁
}void Mytask2( void * arg)       //任务2函数
{while(1){FANZHUAN2;vTaskDelay(400);}                         // 整个函数就是控制A2端口的led灯以400毫秒的间隔不停的闪烁
}void Mytask3( void * arg)     //任务3函数
{while(1){FANZHUAN3;vTaskDelay(800);}                           // 整个函数就是控制A3端口的led灯以800毫秒的间隔不停的闪烁
}TaskHandle_t TaskHandle_t0;            //创建任务0所需要的任务句柄变量
TaskHandle_t TaskHandle_t1;            //创建任务1所需要的任务句柄变量
TaskHandle_t TaskHandle_t2;            //创建任务2所需要的任务句柄变量
TaskHandle_t TaskHandle_t3;            //创建任务3所需要的任务句柄变量int main(void)
{LED_Init();           //初始化led配置xTaskCreate(Mytask0, "Mytask0", 120, NULL, 1, &TaskHandle_t0);  //创建任务0(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask1, "Mytask1", 120, NULL, 2, &TaskHandle_t1);  //创建任务1(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask2, "Mytask2", 120, NULL, 3, &TaskHandle_t2);  //创建任务2(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask3, "Mytask3", 120, NULL, 4, &TaskHandle_t3);  //创建任务3(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)vTaskStartScheduler();   //开启调度器}

led.h文件:

#ifndef __LED_H
#define __LED_H#include "stm32f10x.h"                  // Device header#define GPIOx                GPIOA
#define GPIO_PIN             GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
#define GPIO_CLK             RCC_APB2Periph_GPIOA#define ON                   1
#define OFF                  0#define LED(x)               if(x)\GPIO_ResetBits(GPIOx, GPIO_PIN);\else \GPIO_SetBits(GPIOx, GPIO_PIN);#define FANZHUAN0              {GPIOx->ODR ^= GPIO_Pin_0;}
#define FANZHUAN1              {GPIOx->ODR ^= GPIO_Pin_1;}
#define FANZHUAN2              {GPIOx->ODR ^= GPIO_Pin_2;}
#define FANZHUAN3              {GPIOx->ODR ^= GPIO_Pin_3;}void LED_Init(void);#endif

led.c文件:

#include "led.h"                  // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(GPIO_CLK, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_PIN;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOx, &GPIO_InitStruct);}

FreeRTOS的代码,太多了,我就不都贴出来了,前面我写过一篇这样的文章,不懂的可以往前自己找找。这个工程创建好了,就不用每次都创建了,每次赋值粘贴重命名就好了,还是很省事的啊!

http://www.yayakq.cn/news/429251/

相关文章:

  • 如何购买企业黄页网站网页设计代码模板人物介绍
  • 企业网站后台管理系统dedecms大气金融企业网站模板
  • 自己做的网站怎么在百度能搜到给别人做网站怎么赚钱吗
  • 云南网络网站推广wordpress 问答插件2
  • 可以做片头的网站成都营销网站建设
  • 校园图书回收网站建设网站建设开发公司
  • 泰来县城乡建设局网站wordpress仿论坛
  • 数据库2008做企业网站福利窝又一个wordpress
  • 网站建设的实践体会网站如何做触屏滑动
  • 室内设计知名网站网站服务器 同步备份
  • 房子如何上网站做民宿山东建设网站广告
  • 周口网站建设73data网站完成上线时间
  • 网站服务器服务商网站建设多少
  • 网站一个页面多少钱吴杰
  • 百度收录网站名湖南省博物馆网站建设
  • 自己开网站能赚钱吗海口网站建设哪家专业
  • 网站建设销售合作合同范本wordpress 永久链接
  • 开不锈钢公司怎么做网站在国内做网站网站代理
  • 岳阳网站建设有哪些wordpress 评论验证码
  • html网站地图模板申请域名之后如何做网站
  • 环球贸易网站建设部网站公示
  • 三门峡网站建设价格无锡朝阳网站建设
  • 山西省建设监理协会网-官方网站南联网站建设公司
  • 宁晋企业做网站国外优秀的网页设计作品
  • 济南定制网站建设公司软文推广代表平台
  • 做内容网站玉石网站建设的定位
  • 太原市手机网站建设百度云
  • 网站建设步骤大全网站建设论文开题报告范文
  • 网站摄影设计app下载安装安卓版
  • 北京网站制作郑州黑龙江建设网查询平台