欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
讓stm32也能像PLC一樣 可以使用N多的定時(shí)器,從而不影響其他程序的運(yùn)行
[打印本頁(yè)]
作者:
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 配置很麻煩。不知道大家有沒(méi)有同感。一般情況下,我愿意用單片機(jī)工控板,用梯形圖編程很方便。可是有時(shí)候用的地方PLC功能受到限制,在及時(shí)性和功能方面不如stm32的開(kāi)發(fā)板好用。所有有的時(shí)候還是需要用單片機(jī)。為了控制方便,需要用到多個(gè)定時(shí)的地方,用單片機(jī)的定時(shí)器很浪費(fèi),所以我就做了一個(gè)可以定義出來(lái)多個(gè)軟件定時(shí)器的辦法,經(jīng)過(guò)測(cè)試發(fā)現(xiàn)定時(shí)準(zhǔn)確,使用也很方便。
作者:
jinhua1916
時(shí)間:
2021-3-24 18:25
我定義了一個(gè)數(shù)組:再封裝了一個(gè)函數(shù),可以向用PLC的定時(shí)器一樣來(lái)使用這個(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
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;
}
}
}
}
}
復(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ù)器歸零重新開(kāi)始。
定義一個(gè)結(jié)構(gòu)體/* 定時(shí)器結(jié)構(gòu)體,成員變量必須是 volatile, 否則C編譯器優(yōu)化時(shí)可能有問(wèn)題 */
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ū)
時(shí)間:
2021-3-25 09:09
使用OS 創(chuàng)建任務(wù)更靈活。
作者:
神飛游光
時(shí)間:
2021-3-25 10:21
要是能把工程文件打包出來(lái)就更好了
作者:
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.raoushi.com/bbs/)
Powered by Discuz! X3.1