亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
讓stm32也能像PLC一樣 可以使用N多的定時器,從而不影響其他程序的運行
[打印本頁]
作者:
jinhua1916
時間:
2021-3-24 18:24
標題:
讓stm32也能像PLC一樣 可以使用N多的定時器,從而不影響其他程序的運行
讓stm32 也能像PLC一樣 可以使用N多的定時器,從而不影響其他程序的運行;我發現用plc做控制編程很快,用stm32 配置很麻煩。不知道大家有沒有同感。一般情況下,我愿意用單片機工控板,用梯形圖編程很方便。可是有時候用的地方PLC功能受到限制,在及時性和功能方面不如stm32的開發板好用。所有有的時候還是需要用單片機。為了控制方便,需要用到多個定時的地方,用單片機的定時器很浪費,所以我就做了一個可以定義出來多個軟件定時器的辦法,經過測試發現定時準確,使用也很方便。
作者:
jinhua1916
時間:
2021-3-24 18:25
我定義了一個數組:再封裝了一個函數,可以向用PLC的定時器一樣來使用這個定時器;
作者:
jinhua1916
時間:
2021-3-24 18:27
我定義了一個軟件定時器的機構體,再封裝了一個函數。就像使用PLC的定時器一樣方便。
作者:
jinhua1916
時間:
2021-3-24 18:32
struct students
{
int start;
int Count value;
int Set value;
int Time to mark;
}DSQ[3];
作者:
jinhua1916
時間:
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
時間:
2021-3-24 18:39
void TIM3_IRQHandler(void)
{ int i=0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
// LED0=!LED0;
for (i=0;i<3;i++)
{
if (DSQ[i].start==1)
{
DSQ[i].Count value++;
if(DSQ[i].Count value>=DSQ[i].dingshizhi)
{
DSQ[i].Time to mark=1;
DSQ[i].Count value=0;
}
}
}
}
}
復制代碼
作者:
jinhua1916
時間:
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;"
作者:
黃youhui
時間:
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;
作者:
適得府君書
時間:
2021-3-25 09:09
使用OS 創建任務更靈活。
作者:
神飛游光
時間:
2021-3-25 10:21
要是能把工程文件打包出來就更好了
作者:
mvwtest
時間:
2021-3-25 10:59
是時候考慮上手RTOS了
作者:
jinhua1916
時間:
2021-3-25 18:56
@ 黃youhui 。硬漢的教程里面有這種功能。我去看看。
作者:
jinhua1916
時間:
2021-3-26 20:16
正點原子教的是UCOS II
作者:
profile5
時間:
2021-3-28 16:06
操作系統就是這個思想哇。。
作者:
wufa1986
時間:
2021-3-29 08:23
操作系統虛擬定時器
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1