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

標(biāo)題: 讓stm32也能像PLC一樣 可以使用N多的定時(shí)器,從而不影響其他程序的運(yùn)行 [打印本頁]

作者: jinhua1916    時(shí)間: 2021-3-24 18:24
標(biāo)題: 讓stm32也能像PLC一樣 可以使用N多的定時(shí)器,從而不影響其他程序的運(yùn)行
讓stm32 也能像PLC一樣 可以使用N多的定時(shí)器,從而不影響其他程序的運(yùn)行;我發(fā)現(xiàn)用plc做控制編程很快,用stm32 配置很麻煩。不知道大家有沒有同感。一般情況下,我愿意用單片機(jī)工控板,用梯形圖編程很方便。可是有時(shí)候用的地方PLC功能受到限制,在及時(shí)性和功能方面不如stm32的開發(fā)板好用。所有有的時(shí)候還是需要用單片機(jī)。為了控制方便,需要用到多個(gè)定時(shí)的地方,用單片機(jī)的定時(shí)器很浪費(fèi),所以我就做了一個(gè)可以定義出來多個(gè)軟件定時(shí)器的辦法,經(jīng)過測(cè)試發(fā)現(xiàn)定時(shí)準(zhǔn)確,使用也很方便。

作者: jinhua1916    時(shí)間: 2021-3-24 18:25
我定義了一個(gè)數(shù)組:再封裝了一個(gè)函數(shù),可以向用PLC的定時(shí)器一樣來使用這個(gè)定時(shí)器;
作者: jinhua1916    時(shí)間: 2021-3-24 18:27
我定義了一個(gè)軟件定時(shí)器的機(jī)構(gòu)體,再封裝了一個(gè)函數(shù)。就像使用PLC的定時(shí)器一樣方便。
作者: jinhua1916    時(shí)間: 2021-3-24 18:32
struct students
{
        int start;
        int Count value;
        int Set value;
        int Time to mark;
}DSQ[3];
作者: jinhua1916    時(shí)間: 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);
                                                         
}
作者: jinhua1916    時(shí)間: 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. }
復(fù)制代碼

作者: jinhua1916    時(shí)間: 2021-3-24 19:05
DSQ[1].Time to mark=0;
DSQ[1].start=1;

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

      }
      
      else LED0=0;"

作者: 黃youhui    時(shí)間: 2021-3-25 08:44
硬漢的教程里面有這種功能。用滴答計(jì)時(shí)器做的,每隔1ms計(jì)入中斷一次。在中斷里面將所有的計(jì)數(shù)器加1,當(dāng)計(jì)數(shù)器數(shù)值等于預(yù)裝值時(shí)就將定時(shí)器達(dá)到標(biāo)志位置1.如果是一次性的模式就在這里結(jié)束函數(shù),如果不是一次性的那就將計(jì)數(shù)器歸零重新開始。

定義一個(gè)結(jié)構(gòu)體/* 定時(shí)器結(jié)構(gòu)體,成員變量必須是 volatile, 否則C編譯器優(yōu)化時(shí)可能有問題 */
typedef struct
{
        volatile uint8_t Mode;                /* 計(jì)數(shù)器模式,0 1次性   1 自動(dòng)重裝*/
        volatile uint8_t Flag;                /* 定時(shí)到達(dá)標(biāo)志  */
        volatile uint32_t Count;        /* 計(jì)數(shù)器 */
        volatile uint32_t PreLoad;        /* 計(jì)數(shù)器預(yù)裝值 */
}SOFT_TMR;





作者: 適得府君書    時(shí)間: 2021-3-25 09:09
使用OS 創(chuàng)建任務(wù)更靈活。
作者: 神飛游光    時(shí)間: 2021-3-25 10:21
要是能把工程文件打包出來就更好了
作者: mvwtest    時(shí)間: 2021-3-25 10:59
是時(shí)候考慮上手RTOS了
作者: jinhua1916    時(shí)間: 2021-3-25 18:56
@ 黃youhui 。硬漢的教程里面有這種功能。我去看看。

作者: jinhua1916    時(shí)間: 2021-3-26 20:16
正點(diǎn)原子教的是UCOS II

作者: profile5    時(shí)間: 2021-3-28 16:06
操作系統(tǒng)就是這個(gè)思想哇。。
作者: wufa1986    時(shí)間: 2021-3-29 08:23
操作系統(tǒng)虛擬定時(shí)器




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91视频观看| 日韩激情久久 | 国产精品成人一区二区三区 | 亚洲欧美久久 | 亚洲网站在线 | 99久久综合 | 欧美精品日韩 | 日日爽天天 | 欧美a级成人淫片免费看 | 国产精品毛片va一区二区三区 | 午夜激情福利 | 日本丰满少妇做爰爽爽 | 成年免费视频黄网站在线观看 | 午夜影视 | 婷婷色综合 | 在线免费av网站 | 成人看片免费 | 成人小视频在线 | 亚洲经典一区 | 日韩在线高清 | 国产美女精品 | 免费高清av| 成人h片在线观看 | 国产伦理一区 | 免费观看黄色片 | 一区二区三区四区在线播放 | 十八岁毛片 | 国产美女免费 | 日韩中文字幕一区二区三区 | 伊人精品| 天天躁日日躁狠狠躁伊人 | 一级黄色录像带 | 国产欧美一区二区三区在线看蜜臀 | 中文在线观看视频 | 日韩精品网 | 成人一区在线观看 | 国产剧情在线 | 青娱乐99 | 亚洲综合第一页 | 五月天激情国产综合婷婷婷 | 亚州av在线|