stm32 ucos LED灯延时闪烁+按键闪烁+串口输出

发布者:神秘行者最新更新时间:2018-06-18 来源: eefocus关键字:stm32  ucos  LED  灯延时闪烁  按键闪烁 手机看文章 扫描二维码
随时随地手机看文章

#include "main.h"
#include "stdio.h"


USART_InitTypeDef  USART_InitStructure;
#define RCC_KEY1       RCC_APB2Periph_GPIOD
#define GPIO__KEY1_Port GPIOD
#define KEY1 GPIO_Pin_3


#define RCC_KEY@ RCC_APB2Periph_GPIOA
#define GPIO_KEY2_Port GPIOA
#define KEY2 GPIO_Pin_8


#define RCC_KEY3                                    RCC_APB2Periph_GPIOC
#define GPIO_KEY3_PORT                              GPIOC    
#define GPIO_KEY3                                   GPIO_Pin_13 


#define RCC_KEY4                                    RCC_APB2Periph_GPIOA
#define GPIO_KEY4_PORT                              GPIOA    
#define GPIO_KEY4                                   GPIO_Pin_0 


#define  NOKEY  0
#define  KEY1   1
#define  KEY2   2
#define  KEY3   3
#define  KEY4   4


INT8U  KeyNum  = 0;


static OS_STK TaskOSSTK[128];
static OS_STK Task1OSSTK[128];
static OS_STK Task2OSSTK[128];
static OS_STK Task3OSSTK[128];
static OS_STK Task4OSSTK[128];


static void   Task0(void * pdata); //优先级6
static void   Task1(void * pdata); //7

static void   Task2(void * pdata); //8


static void   Task3(void * pdata); //9


 int fputc(int ch, FILE *f)

   {
      USART_SendData(USART1, (unsigned char) ch);// USART1 可以换成 USART2 等

      while (!(USART1->SR & USART_FLAG_TXE));
      return (ch);
   }
 // 接收数据
   int GetKey (void)  { 

      while (!(USART1->SR & USART_FLAG_RXNE));
      return ((int)(USART1->DR & 0x1FF));
   }


int main()
{
SystemInit();
RCC_Configuration();
GPIO_Configuration()
USART_Configuration();
OSInit();
OSTaskCreate(Task0,(void *)0,(OS_STK *)&Task0OSSTK[128-1],6);
OSStart();
while(1);


}
static void Task0(void *pdata)
{
(void)pdata;


OS_CPU_SysTickInit();
OSTaskCreate(Task1, (void *)0, (OS_STK *)&Task1OSStk[128-1], 7);
OSTaskCreate(Task2, (void *)0, (OS_STK *)&Tas2OSStk[128-1], 8);
OSTaskCreate(Task3, (void *)0, (OS_STK *)&Task3OSStk[128-1], 9);




for(;;)
{
OSTimeDly(OS_TICKS_PER_SEC);
GPIO_SetBits(GPIOF, GPIO_Pin_6);
OSTimeDly(OS_TICKS_PER_SEC);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);
}
}


static void Task1(void *pdata)
{
(void)pdata;


    for(;;)
{
OSTimeDly(OS_TICKS_PER_SEC/2);
GPIO_SetBits(GPIOF, GPIO_Pin_7);
OSTimeDly(OS_TICKS_PER_SEC/2);
GPIO_ResetBits(GPIOF, GPIO_Pin_7);
}
}


static void Task2(void *pdata)
{
(void)pdata;
for(;;)
{ printf("灯3开始闪烁\r\n");
OSTimeDly(OS_TICKS_PER_SEC/5);
GPIO_SetBits(GPIOF, GPIO_Pin_8);
OSTimeDly(OS_TICKS_PER_SEC/5);
GPIO_ResetBits(GPIOF, GPIO_Pin_8);
}
}


static void Task3(void *pdata)
{
(void)pdata;


while(1)
{
KeyNum = ReadKeyDown(); 
if(KeyNum==KEY1)
{

OSTimeDly(OS_TICKS_PER_SEC/10);
GPIO_SetBits(GPIOF, GPIO_Pin_9);
OSTimeDly(OS_TICKS_PER_SEC/10);
GPIO_ResetBits(GPIOF, GPIO_Pin_9);
}
}
}


 INT8U ReadKeyDown(void)
{
  /* 1 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY1_PORT, GPIO_KEY1))
  {
    return KEY1; 
  }
  /* 2 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY2_PORT, GPIO_KEY2))
  {
    return KEY2; 
  }
  /* 3 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY3_PORT, GPIO_KEY3))
  {
    return KEY3; 
  }
  /* 4 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY4_PORT, GPIO_KEY4))
  {
    return KEY4; 
  }
  /* No key is pressed */
  else 
  {
    return NOKEY;
  }
}


关键字:stm32  ucos  LED  灯延时闪烁  按键闪烁 引用地址:stm32 ucos LED灯延时闪烁+按键闪烁+串口输出

上一篇:[HAL库学习之路]7.定时器中断
下一篇:stm32f103 LED灯简单程序实现

推荐阅读最新更新时间:2024-03-16 16:05

STM32总线架构讲解
01前文 本文主要进行学习总结,为他人提供参考和学习,也为了记录自己的学习知识进行总结,并且望有错误之处,请各位技术大佬们提出修正,互相进步,也便认识自己的不足之处,查漏补缺。 02前情提要 在说总线架构之前,要了解一些知识点,AMBA是什么、总线、矩阵的作用,了解了这些才能明白总线为何这样走,为何要有矩阵。 1、AMBA AMBA是ARM公司提出的一种开放性的SoC总线标准,现在已经广泛的应用于RISC的内核上了。 定义了一种多总线系统,包括系统总线和等级稍低的外设总线。 利用AMBA定义的一款总线架构: AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced Sy
[单片机]
<font color='red'>STM32</font>总线架构讲解
苹果MacBook Air和iPad Pro全系采用mini-LED,2022年发布
据DigiTimes报道,苹果的下一代MacBook Air将配备mini-LED屏幕,并将于2022年推出。 DigiTimes此前曾表示,MacBook Air未来将配备mini-LED屏幕,但该媒体已经再次强调了这一说法,其援引行业消息人士的话称,苹果可能为配备13.3英寸显示屏的“MacBook Air”采用mini-LED技术,该设备将于 2022年推出。 预计明年新的mini-LED型号将使MacBook Air的出货量增加约 200 万台,其还补充说,明年11英寸iPad Pro也有望采用mini-LED屏幕。 此前国外爆料者表示,新版MacBook Air外形将会大改,相比目前的楔形造型更加美观,笔记本前后厚度
[手机便携]
基于美信MAX16836多颗高亮LED驱动设计方案
Maxim 公司的MAX16836是电流调节器,它的工作电压为6.5V到40V,能够 驱动 总电流为350mA的一串或多串高亮 LED (HBLED)。本文将主要介绍MAX16836的主要特性,功能方框图以及 PWM 调光多颗HB LED 驱动电路等。 一. MAX16836主要特性如下: +6.5V至+40V工作电压范围 可调的LED电流(35mA至350mA) ±3.5%输出电流精度 用于 亮度 控制 接口 的高压DIM引脚 内置调整 元件 ,具有极低压差(0.55V典型值) 4mA电流源出能力的+5V稳压器 并联工作LED电流 350mA
[电源管理]
基于美信MAX16836多颗高亮<font color='red'>LED</font>驱动设计方案
基于STM32单片机发送字符串的函数
最近由于要调试一个SMS发送短信的模块,该模块需要发送一系列AT指令,且需要字符串发送,但是STM32官方给的usart.c中并没有直接发送字符串的函数,因此写了一个发送字符串的函数。 其实发送字符串的本质还是发送一个个字符,所以只需在字符串结束标志之前,循环发送字符即可。不罗嗦,上程序。 //程序功能:利用串口发送一个字符串 // 参数:USARTx USART编号 可取 USART1、USART2、USART3、USART4、 USART5(STM32F103ZET6) str 需要发送的字符串 #include “stm32f10x.h” void Usart_SendString(USART_TypeDef* US
[单片机]
日本推出“即时兑换” 推动LED照明产业
    最近日本推出一项“即时兑换”制度,将推动日本LED照明产业发展。这项新制度有点类似于市场积分购物的促销活动,只是日本将之运用于节能环保的LED照明产业,吸引广大市场积极参与,共同推动LED照明事业的发展。     新制度采用“即时兑换”制度,即在购买环保积分对象商品时当场获得环保积分并兑换商品。其次,在即时兑换这些环保商品时,将采用1积分折合2日元的优惠政策(通常为1分折合1日元)。由此,用2000积分即可即时兑换购买4000日元的LED灯泡。     日本是较早推行LED照明政策的国家。近年来中国陆续出台了多项LED照明政策,从“十城万盏”到MOCVD补贴,从“千里十万”到光电产业基地的建设。     浙江一点神照
[电源管理]
STM32 USB IAP 步骤
1.下载STM32_USB-FS-Device_Lib_V3.2.1.rar 2.安装DfuSe_Demo_V3.0_Setup.exe。 3.打开...\STM32_USB-FS-Device_Lib_V3.2.1\Project\Device_Firmware_Upgrade\MDK-ARM\DFU.uvproj 修改://#define ApplicationAddress 0x08003000为#define ApplicationAddress 0x08004000(因为要修改程序增加空间) 编译程序,用stlink/Jlink将程序下载到STM32中。 4.用usb线连接STM32板,PC端出现发现新硬件。 5.安装
[单片机]
STM32】SRAM启动
创建工程的调试版本 该操作调试版本会复制原工程的配置 修改FLASH的目标配置 用的是STM32F103C8T6 RAM起始地址为是0x2000 0000大小为20KB, 这里用12KB大小的RAM作为虚拟ROM,用8KB的RAM作为RAM 虚拟ROM起始地址0x2000 0000大小0x3000 RAM起始地址0x2000 3000大小0x2000 配置分散加载文件 keil STM32中sct 分散加载文件学习 注意要与FLASH下的目标配置一致 虚拟ROM起始地址0x2000 0000大小0x3000 RAM起始地址0x2000 3000大小0x2000 ; *************************
[单片机]
【<font color='red'>STM32</font>】SRAM启动
OSRAM Opto推出用于大尺寸显示器背光照明的LED
OSRAM Opto Semiconductors公司推出的Golden Dragon ARGUS LED可用于32至82英寸LCD面板的背光照明。该产品整合了OSRAM公司的ARGUS透镜和薄膜Golden Dragon LED,能为显示器提供均匀的背光照明和高亮度照明效率。 Golden Dragon ARGUS发光器件集成了4个薄膜高亮的LED(2个绿色、1个蓝色和1个红色),外形封装尺寸高度仅4mm,多个器件以蜂巢或排列形式组织能构成可扩展的高亮照明系统。 基于上述LED构成的32至82英寸大尺寸显示器背光照明系统甚至在高输出时也无需主动散热,该产品经过了振动和冲击检测,寿命超过50,000小时。同时不含铅和汞,符合R
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved