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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

讓stm32也能像PLC一樣 可以使用N多的定時器,從而不影響其他程序的運行

  [復制鏈接]
跳轉到指定樓層
樓主
ID:285686 發表于 2021-3-24 18:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
讓stm32 也能像PLC一樣 可以使用N多的定時器,從而不影響其他程序的運行;我發現用plc做控制編程很快,用stm32 配置很麻煩。不知道大家有沒有同感。一般情況下,我愿意用單片機工控板,用梯形圖編程很方便。可是有時候用的地方PLC功能受到限制,在及時性和功能方面不如stm32的開發板好用。所有有的時候還是需要用單片機。為了控制方便,需要用到多個定時的地方,用單片機的定時器很浪費,所以我就做了一個可以定義出來多個軟件定時器的辦法,經過測試發現定時準確,使用也很方便。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:285686 發表于 2021-3-24 18:25 | 只看該作者
我定義了一個數組:再封裝了一個函數,可以向用PLC的定時器一樣來使用這個定時器;

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:285686 發表于 2021-3-24 18:27 | 只看該作者
我定義了一個軟件定時器的機構體,再封裝了一個函數。就像使用PLC的定時器一樣方便。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:285686 發表于 2021-3-24 18:32 | 只看該作者
struct students
{
        int start;
        int Count value;
        int Set value;
        int Time to mark;
}DSQ[3];
回復

使用道具 舉報

5#
ID:285686 發表于 2021-3-24 18:33 | 只看該作者
void TIM3_Int_Init(u16 arr,u16 psc)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

        TIM_TimeBaseStructure.TIM_Period = arr;        
        TIM_TimeBaseStructure.TIM_Prescaler =psc;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

        TIM_ITConfig(  
                TIM3, //TIM2
                TIM_IT_Update ,
                ENABLE  
                );
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);  

        TIM_Cmd(TIM3, ENABLE);
                                                         
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:285686 發表于 2021-3-24 18:39 | 只看該作者
  1. void TIM3_IRQHandler(void)   
  2.    { int i=0;
  3.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
  4.                 {
  5.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );
  6. //                        LED0=!LED0;
  7.       
  8.                                 for (i=0;i<3;i++)
  9.                                 {
  10.                                                 if (DSQ[i].start==1)
  11.                                                 {
  12.                                                         DSQ[i].Count value++;
  13.                                                                         if(DSQ[i].Count value>=DSQ[i].dingshizhi)
  14.                                                                         {
  15.                                                                         DSQ[i].Time to mark=1;
  16.                                                                                 DSQ[i].Count value=0;
  17.                                                                         }
  18.                                                 }
  19.                                         }        



  20. }

  21. }
復制代碼
回復

使用道具 舉報

7#
ID:285686 發表于 2021-3-24 19:05 | 只看該作者
DSQ[1].Time to mark=0;
DSQ[1].start=1;

"DSQ[1].Count value=77;//77毫秒,隨意定時
   
      if (DSQ[1].Time to mark==1)
      {
       LED0=1;
        DSQ[1].start=0;

      }
      
      else LED0=0;"
回復

使用道具 舉報

8#
ID:592807 發表于 2021-3-25 08:44 | 只看該作者
硬漢的教程里面有這種功能。用滴答計時器做的,每隔1ms計入中斷一次。在中斷里面將所有的計數器加1,當計數器數值等于預裝值時就將定時器達到標志位置1.如果是一次性的模式就在這里結束函數,如果不是一次性的那就將計數器歸零重新開始。

定義一個結構體/* 定時器結構體,成員變量必須是 volatile, 否則C編譯器優化時可能有問題 */
typedef struct
{
        volatile uint8_t Mode;                /* 計數器模式,0 1次性   1 自動重裝*/
        volatile uint8_t Flag;                /* 定時到達標志  */
        volatile uint32_t Count;        /* 計數器 */
        volatile uint32_t PreLoad;        /* 計數器預裝值 */
}SOFT_TMR;




評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:367934 發表于 2021-3-25 09:09 | 只看該作者
使用OS 創建任務更靈活。
回復

使用道具 舉報

10#
ID:695741 發表于 2021-3-25 10:21 | 只看該作者
要是能把工程文件打包出來就更好了
回復

使用道具 舉報

11#
ID:781556 發表于 2021-3-25 10:59 | 只看該作者
是時候考慮上手RTOS了
回復

使用道具 舉報

12#
ID:285686 發表于 2021-3-25 18:56 | 只看該作者
@ 黃youhui 。硬漢的教程里面有這種功能。我去看看。
回復

使用道具 舉報

13#
ID:285686 發表于 2021-3-26 20:16 | 只看該作者
正點原子教的是UCOS II
回復

使用道具 舉報

14#
ID:304608 發表于 2021-3-28 16:06 | 只看該作者
操作系統就是這個思想哇。。
回復

使用道具 舉報

15#
ID:879348 發表于 2021-3-29 08:23 | 只看該作者
操作系統虛擬定時器
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99这里只有精品视频 | 久久国产精品免费一区二区三区 | 国产精品一区二区在线 | 久久久亚洲成人 | 深夜福利影院 | 国产成人福利 | 免费久草 | 午夜欧美一区二区三区在线播放 | 一区二区三区中文字幕 | 欧美午夜精品 | 精精国产视频 | 亚洲欧美在线一区 | 久久大全 | 噜啊噜在线| 一级黄色片一级黄色片 | 欧美二区在线 | 亚洲大片在线观看 | 在线国产一区二区 | 成人高清网站 | 国产日韩欧美 | 国产精品一码二码三码在线 | 国产麻豆一区二区三区 | 国产综合精品一区二区三区 | 精品欧美一区免费观看α√ | 亚洲欧美日韩系列 | 成人免费在线 | 久久久人成影片一区二区三区 | 精品在线99 | 国产精品视频网 | 午夜成人免费视频 | 国产欧美精品区一区二区三区 | 欧美一区二区三区大片 | 久久国产一区二区三区 | 久久久久国产一区二区三区四区 | 日韩午夜激情 | 久久久久久久久久久久91 | 久草在线 | 欧美日韩午夜精品 | 国产精品久久久久久久午夜 | 日韩精品极品视频在线观看免费 | 欧美激情一区二区 |