久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5174|回復: 4
打印 上一主題 下一主題
收起左側

STM32F103在uCOS_II操作系統下按鍵防抖例子

[復制鏈接]
跳轉到指定樓層
樓主
ID:253140 發表于 2017-11-29 08:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
奉獻 STM32F103在uCOS_II操作系統下按鍵防抖例子

單片機源程序如下:
  1. /******************** (C) COPYRIGHT 2013 STMicroelectronics ********************
  2. * File Name          : main.c
  3. * Version            : V2.0.1
  4. * Description        : STM32神舟III號開發板    廣州
  5. *******************************************************************************/

  6. #include "includes.h"
  7. #include "stm32f10x.h"
  8. #include "stm32f10x_rcc.h"

  9. const uint32_t SystemFrequency         = 72000000;      /*!< System Clock Frequency (Core Clock) */

  10. #define USER1_KEY_PIN                                                                                GPIO_Pin_8
  11. /*神州III號LED燈相關定義*/
  12. #define RCC_GPIO_LED                    RCC_APB2Periph_GPIOF    /*LED使用的GPIO時鐘*/
  13. #define LEDn                            4                       /*神舟III號LED數量*/
  14. #define GPIO_LED                        GPIOF                   /*神舟III號LED燈使用的GPIO組*/

  15. #define DS1_PIN                         GPIO_Pin_6              /*DS1使用的GPIO管腳*/
  16. #define DS2_PIN                         GPIO_Pin_7                                /*DS2使用的GPIO管腳*/
  17. #define DS3_PIN                         GPIO_Pin_8                          /*DS3使用的GPIO管腳*/
  18. #define DS4_PIN                         GPIO_Pin_9                                /*DS4使用的GPIO管腳*/

  19. GPIO_InitTypeDef GPIO_InitStructure;

  20. #define START_TASK_PRIO       4
  21. #define        TASK_1_PRIO                        5
  22. #define        TASK_2_PRIO                        6
  23. #define        TASK_3_PRIO                        7
  24. #define        TASK_KEY_PRIO                8

  25. /************設置棧大小(單位為 OS_STK )************/
  26. #define START_TASK_STK_SIZE   100  
  27. #define        TASK_1_STK_SIZE                100
  28. #define        TASK_2_STK_SIZE                100
  29. #define        TASK_3_STK_SIZE   100
  30. #define        TASK_KEY_STK_SIZE   100

  31. uint8_t LEDSTATE=0;

  32. OS_STK start_task_stk[START_TASK_STK_SIZE];                  //定義棧
  33. OS_STK task_1_stk[TASK_1_STK_SIZE];                  //定義棧
  34. OS_STK task_2_stk[TASK_2_STK_SIZE];                  //定義棧
  35. OS_STK task_3_stk[TASK_2_STK_SIZE];
  36. OS_STK task_key_stk[TASK_KEY_STK_SIZE];

  37. void Task_1_Shenzhou(void *arg)
  38. {
  39.     (void)arg;                                // 'arg' 并沒有用到,防止編譯器提示警告
  40.     while (1)
  41.     {
  42.                         GPIO_ResetBits(GPIO_LED,DS3_PIN); //點亮LED3
  43.                         OSTimeDlyHMSM(0, 0,0,300);                                  //延時
  44.                         GPIO_SetBits(GPIO_LED,DS3_PIN);          //熄滅LED3
  45.                         OSTimeDlyHMSM(0, 0,0,300);                  //延時  
  46.     }
  47. }

  48. void Task_2_Shenzhou(void *arg)
  49. {
  50.     (void)arg;                                // 'arg' 并沒有用到,防止編譯器提示警告
  51.     while (1)
  52.     {
  53.                         GPIO_ResetBits(GPIO_LED,DS2_PIN); //點亮LED2
  54.                         OSTimeDlyHMSM(0, 0,0,200);                                          //延時
  55.                         GPIO_SetBits(GPIO_LED,DS2_PIN);          //熄滅LED2
  56.                         OSTimeDlyHMSM(0, 0,0,200);                          //延時
  57.     }
  58. }

  59. void Task_3_Shenzhou(void *arg)
  60. {
  61.                 (void)arg;                                // 'arg' 并沒有用到,防止編譯器提示警告
  62.     while (1)
  63.     {
  64.                         LEDSTATE=~LEDSTATE;
  65.                        
  66.                         if(LEDSTATE)
  67.                         {
  68.                                 GPIO_ResetBits(GPIO_LED,DS4_PIN);       
  69.                         }
  70.                         else
  71.                         {
  72.                                 GPIO_SetBits(GPIO_LED,DS4_PIN);
  73.                         }
  74.                         OSTaskDel (OS_PRIO_SELF);
  75.     }
  76. }

  77. void Task_key_Shenzhou(void *arg)
  78. {
  79.                 uint8_t keystate;
  80.                 uint8_t key_press=0;
  81.        
  82.                 (void)arg;
  83.                 while(1)
  84.                 {
  85.                        
  86.                         OSTimeDlyHMSM(0, 0,0,20);
  87.                         keystate = GPIO_ReadInputDataBit(GPIOA,USER1_KEY_PIN);
  88.                         if(keystate==1)
  89.                         {
  90.                                         OSTimeDlyHMSM(0, 0,0,20);
  91.                                         keystate = GPIO_ReadInputDataBit(GPIOA,USER1_KEY_PIN);
  92.                                         if(keystate==1)
  93.                                         {
  94.                                                 key_press=1;
  95.                                         }
  96.                         }
  97.                         if(keystate==0 && key_press==1)
  98.                         {
  99.                                         key_press=0;
  100.                                         OSTaskCreate(Task_3_Shenzhou,(void *)0,&task_3_stk[TASK_3_STK_SIZE-1], TASK_3_PRIO);
  101.                         }
  102.                 }
  103. }

  104. void Task_Shenzhou(void *p_arg)
  105. {
  106.     (void)p_arg;               // 'p_arg' 并沒有用到,防止編譯器提示警告

  107.         OSTaskCreate(Task_1_Shenzhou,(void *)0,&task_1_stk[TASK_1_STK_SIZE-1], TASK_1_PRIO);//創建任務1

  108.         OSTaskCreate(Task_2_Shenzhou,(void *)0,&task_2_stk[TASK_2_STK_SIZE-1], TASK_2_PRIO);//創建任務2

  109.         OSTaskCreate(Task_key_Shenzhou,(void *)0,&task_key_stk[TASK_KEY_STK_SIZE-1], TASK_KEY_PRIO);
  110.        
  111.     while (1)
  112.     {
  113.                         GPIO_ResetBits(GPIO_LED,DS1_PIN); //點亮LED1
  114.                         OSTimeDlyHMSM(0, 0,0,100);
  115.                         GPIO_SetBits(GPIO_LED,DS1_PIN);          //熄滅LED1
  116.                         OSTimeDlyHMSM(0, 0,0,100);
  117.     }
  118. }

  119. int main(void)
  120. {
  121.         SystemInit();                /* 配置系統時鐘為72M */       

  122.         SysTick_Config(SystemFrequency/OS_TICKS_PER_SEC);  /* 初始化并使能SysTick定時器        */

  123.   /* 配置神舟III號LED燈使用的GPIO管腳模式 */
  124.           RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);           /*使能LED燈使用的GPIO時鐘*/
  125.           GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;
  126.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  127. ……………………

  128. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
STM32F103-uCOS_II按鍵防抖例子.rar (506.67 KB, 下載次數: 55)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:248067 發表于 2017-12-25 17:13 | 只看該作者
感謝分享
回復

使用道具 舉報

板凳
ID:81544 發表于 2018-11-5 08:54 | 只看該作者
感謝分享
回復

使用道具 舉報

地板
ID:368791 發表于 2018-11-7 22:49 來自觸屏版 | 只看該作者
感謝分享。。。。。
回復

使用道具 舉報

5#
ID:328121 發表于 2019-11-29 08:31 | 只看該作者
感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费高清视频 | 亚洲一区精品视频 | 二区中文字幕 | 久草欧美| 欧美中文字幕在线 | 浴室洗澡偷拍一区二区 | 欧美电影网 | 欧美成人激情 | 日韩av手机在线观看 | 国产精品夜间视频香蕉 | av免费看片 | 日韩不卡一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 日韩国产中文字幕 | 成人免费久久 | 伊人精品在线 | av中文字幕在线观看 | 黄色免费在线观看网站 | 羞羞视频网站 | av国产精品毛片一区二区小说 | 国产精品色一区二区三区 | 国产精品一区二区免费 | 日韩欧美一二三区 | 精品成人在线视频 | 国产精品国产 | 亚洲精品久 | 日韩中文字幕 | av手机在线看 | 亚洲精品久久久久中文字幕欢迎你 | 亚洲成人免费视频在线观看 | 黄色一级免费 | 欧美久久精品 | 麻豆久久久久久 | 一区二区三区国产 | 韩日免费视频 | 亚洲激情在线 | 中文字幕精品一区二区三区精品 | 日韩欧美视频免费在线观看 | 夜夜干夜夜操 | 日韩视频在线免费观看 | 在线观看特色大片免费网站 |