本章參考資料《 ARM Cortex?-M4F 技術(shù)參考手冊》-4.5 章節(jié)SysTick Timer(STK),和4.48章節(jié)SHPRx,其中STK這個章節(jié)有SysTick的簡介和寄存器的詳細(xì)描述。因為SysTick是屬于CM4內(nèi)核的外設(shè),有關(guān)寄存器的定義和部分庫函數(shù)都在core_cm4.h這個頭文件中實現(xiàn)。所以學(xué)習(xí)SysTick的時候可以參考這兩個資料,一個是文檔,一個是源碼。
18.1 SysTick簡介
SysTick—系統(tǒng)定時器是屬于CM4內(nèi)核中的一個外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時器是一個24bit的向下遞減的計數(shù)器,計數(shù)器每計數(shù)一次的時間為1/SYSCLK,一般我們設(shè)置系統(tǒng)時鐘SYSCLK等于180M。當(dāng)重裝載數(shù)值寄存器的值遞減到0的時候,系統(tǒng)定時器就產(chǎn)生一次中斷,以此循環(huán)往復(fù)。
因為SysTick是屬于CM4內(nèi)核的外設(shè),所以所有基于CM4內(nèi)核的單片機都具有這個系統(tǒng)定時器,使得軟件在CM4單片機中可以很容易的移植。系統(tǒng)定時器一般用于操作系統(tǒng),用于產(chǎn)生時基,維持操作系統(tǒng)的心跳。
18.2 SysTick寄存器介紹
SysTick—系統(tǒng)定時有4個寄存器,簡要介紹如下。在使用SysTick產(chǎn)生定時的時候,只需要配置前三個寄存器,最后一個校準(zhǔn)寄存器不需要使用。
表 181 SysTick寄存器匯總
表 182 SysTick控制及狀態(tài)寄存器
表 183 SysTick 重裝載數(shù)值寄存器
表 184 SysTick當(dāng)前數(shù)值寄存器
表 185 SysTick校準(zhǔn)數(shù)值寄存器
系統(tǒng)定時器的校準(zhǔn)數(shù)值寄存器在定時實驗中不需要用到。有關(guān)各個位的描述這里引用手冊里面的英文版本,比較晦澀難懂,暫時不知道這個寄存器用來干什么。有研究過的朋友可以交流,起個拋磚引玉的作用。
18.3 SysTick定時實驗
利用SysTick產(chǎn)生1s的時基,LED以1s的頻率閃爍。
18.3.1 硬件設(shè)計
SysTick屬于單片機內(nèi)部的外設(shè),不需要額外的硬件電路,剩下的只需一個LED燈即可。
18.3.2 軟件設(shè)計
這里只講解核心的部分代碼,有些變量的設(shè)置,頭文件的包含等并沒有涉及到,完整的代碼請參考本章配套的工程。我們創(chuàng)建了兩個文件:bsp_SysTick.c和bsp_ SysTick.h文件用來存放SysTick驅(qū)動程序及相關(guān)宏定義,中斷服務(wù)函數(shù)放在stm32f4xx_it.h文件中。
1. 編程要點
1、設(shè)置重裝載寄存器的值
2、清除當(dāng)前數(shù)值寄存器的值
3、配置控制與狀態(tài)寄存器
2. 代碼分析
SysTick 屬于內(nèi)核的外設(shè),有關(guān)的寄存器定義和庫函數(shù)都在內(nèi)核相關(guān)的庫文件core_cm4.h中。
SysTick配置庫函數(shù)
代碼 181SysTick配置庫函數(shù)
1 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
2 {
3 // 不可能的重裝載值,超出范圍
4 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) {
5 return (1UL);
6 }
7
8 // 設(shè)置重裝載寄存器
9 SysTick->LOAD = (uint32_t)(ticks - 1UL);
10
11 // 設(shè)置中斷優(yōu)先級
12 NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);
13
14 // 設(shè)置當(dāng)前數(shù)值寄存器
15 SysTick->VAL = 0UL;
16
17 // 設(shè)置系統(tǒng)定時器的時鐘源為AHBCLK=180M
18 // 使能系統(tǒng)定時器中斷
19 // 使能定時器
20 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
21 SysTick_CTRL_TICKINT_Msk |
22 SysTick_CTRL_ENABLE_Msk;
23 return (0UL);
24 }
用固件庫編程的時候我們只需要調(diào)用庫函數(shù)SysTick_Config()即可,形參ticks用來設(shè)置重裝載寄存器的值,最大不能超過重裝載寄存器的值2^24,當(dāng)重裝載寄存器的值遞減到0的時候產(chǎn)生中斷,然后重裝載寄存器的值又重新裝載往下遞減計數(shù),以此循環(huán)往復(fù)。緊隨其后設(shè)置好中斷優(yōu)先級,最后配置系統(tǒng)定時器的時鐘為180M,使能定時器和定時器中斷,這樣系統(tǒng)定時器就配置好了,一個庫函數(shù)搞定。
SysTick_Config()庫函數(shù)主要配置了SysTick中的三個寄存器:LOAD、VAL和CTRL,有關(guān)具體的部分看代碼注釋即可。
配置SysTick中斷優(yōu)先級
在SysTick_Config()庫函數(shù)還調(diào)用了固件庫函數(shù)NVIC_SetPriority()來配置系統(tǒng)定時器的中斷優(yōu)先級,該庫函數(shù)也在core_m4.h中定義,原型如下:
1 __STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
2 {
3 if ((int32_t)IRQn < 0) {
4 SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] =
5 (uint8_t)((priority << (8 - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
6 } else {
7 NVIC->IP[((uint32_t)(int32_t)IRQn)] =
8 (uint8_t)((priority << (8 - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
9 }
10 }
因為SysTick屬于內(nèi)核外設(shè),跟普通外設(shè)的中斷優(yōu)先級有些區(qū)別,并沒有搶占優(yōu)先級和子優(yōu)先級的說法。在STM32F429中,內(nèi)核外設(shè)的中斷優(yōu)先級由內(nèi)核SCB這個外設(shè)的寄存器:SHPRx(x=1.2.3)來配置。有關(guān)SHPRx寄存器的詳細(xì)描述可參考《Cortex-M4內(nèi)核編程手冊》4.4.8章節(jié)。下面我們簡單介紹下這個寄存器。
SPRH1-SPRH3是一個32位的寄存器,但是只能通過字節(jié)訪問,每8個字段控制著一個內(nèi)核外設(shè)的中斷優(yōu)先級的配置。在STM32F429中,只有位7:3這高四位有效,低四位沒有用到,所以內(nèi)核外設(shè)的中斷優(yōu)先級可編程為:0~15,只有16個可編程優(yōu)先級,數(shù)值越小,優(yōu)先級越高。如果軟件優(yōu)先級配置相同,那就根據(jù)他們在中斷向量表里面的位置編號來決定優(yōu)先級大小,編號越小,優(yōu)先級越高。
表 186 系統(tǒng)異常優(yōu)先級字段
如果要修改內(nèi)核外設(shè)的優(yōu)先級,只需要修改下面三個寄存器對應(yīng)的某個字段即可。
圖 181 SHPR1寄存器
圖 182 SHPR2寄存器
圖 183 SHPR3寄存器
在系統(tǒng)定時器中,配置優(yōu)先級為(1UL << __NVIC_PRIO_BITS) - 1UL),其中宏__NVIC_PRIO_BITS為4,那計算結(jié)果就等于15,可以看出系統(tǒng)定時器此時設(shè)置的優(yōu)先級在內(nèi)核外設(shè)中是最低的。
1 // 設(shè)置系統(tǒng)定時器中斷優(yōu)先級
2 NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);
但是,問題來了,剛剛我們只是學(xué)習(xí)了內(nèi)核的外設(shè)的優(yōu)先級配置。如果我同時使用了systick和片上外設(shè)呢?而且片上外設(shè)也剛好需要使用中斷,那systick的中斷優(yōu)先級跟外設(shè)的中斷優(yōu)先級怎么設(shè)置?會不會因為systick是內(nèi)核里面的外設(shè),所以它的中斷優(yōu)先級就一定比內(nèi)核之外的外設(shè)的優(yōu)先級高?
從《STM32中斷應(yīng)用概覽》這章我們知道,外設(shè)在設(shè)置中斷優(yōu)先級的時候,首先要分組,然后設(shè)置搶占優(yōu)先級和子優(yōu)先級。而systick這類內(nèi)核的外設(shè)在配置的時候,只需要配置一個寄存器即可,取值范圍為0~15。既然配置方法不同,那如何區(qū)分兩者的優(yōu)先級?下面舉例說明。
比如配置一個外設(shè)的中斷優(yōu)先級分組為2,搶占優(yōu)先級為1,子優(yōu)先級也為1,systick的優(yōu)先級為固件庫默認(rèn)配置的15。當(dāng)我們比較內(nèi)核外設(shè)和片上外設(shè)的中斷優(yōu)先級的時候,我們只需要抓住NVIC的中斷優(yōu)先級分組不僅對片上外設(shè)有效,同樣對內(nèi)核的外設(shè)也有效。我們把systick的優(yōu)先級15轉(zhuǎn)換成二進(jìn)制值就是1111(0b),又因為NVIC的優(yōu)先級分組2,那么前兩位的11(0b)就是3,后兩位的11(0b)也是3。無論從搶占還是子優(yōu)先級都比我們設(shè)定的外設(shè)的優(yōu)先級低。如果當(dāng)兩個的軟件優(yōu)先級都配置成一樣,那么就比較他們在中斷向量表中的硬件編號,編號越小,優(yōu)先級越高。
SysTick初始化函數(shù)
代碼 182 SysTick初始化函數(shù)
1 /**
2 * @brief 啟動系統(tǒng)滴答定時器 SysTick
3 * @param 無
4 * @retval 無
5 */
6 void SysTick_Init(void)
7 {
8 /* SystemFrequency / 1000 1ms中斷一次
9 * SystemFrequency / 100000 10us中斷一次
10 * SystemFrequency / 1000000 1us中斷一次
11 */
12 if (SysTick_Config(SystemCoreClock / 100000)) {
13 /* Capture error */
14 while (1);
15 }
16 }
SysTick初始化函數(shù)由用戶編寫,里面調(diào)用了SysTick_Config()這個固件庫函數(shù),通過設(shè)置該固件庫函數(shù)的形參,就決定了系統(tǒng)定時器經(jīng)過多少時間就產(chǎn)生一次中斷。
SysTick中斷時間的計算
SysTick定時器的計數(shù)器是向下遞減計數(shù)的,計數(shù)一次的時間TDEC=1/CLKAHB,當(dāng)重裝載寄存器中的值VALUELOAD減到0的時候,產(chǎn)生中斷,可知中斷一次的時間TINT=VALUELOAD * TDEC中斷= VALUELOAD/CLKAHB,其中CLKAHB =180MHZ。如果設(shè)置為180,那中斷一次的時間TINT=180/180M=1us。不過1us的中斷沒啥意義,整個程序的重心都花在進(jìn)出中斷上了,根本沒有時間處理其他的任務(wù)。
SysTick_Config(SystemCoreClock / 100000))
SysTick_Config()的形我們配置為SystemCoreClock / 100000=180M/100000=1800,從剛剛分析我們知道這個形參的值最終是寫到重裝載寄存器LOAD中的,從而可知我們現(xiàn)在把SysTick定時器中斷一次的時間TINT=1800/180M=10us。
SysTick定時時間的計算
當(dāng)設(shè)置好中斷時間TINT后,我們可以設(shè)置一個變量t,用來記錄進(jìn)入中斷的次數(shù),那么變量t乘以中斷的時間TINT就可以計算出需要定時的時間。
SysTick定時函數(shù)
現(xiàn)在我們定義一個微秒級別的延時函數(shù),形參為nTime,當(dāng)用這個形參乘以中斷時間TINT就得出我們需要的延時時間,其中TINT我們已經(jīng)設(shè)置好為10us。關(guān)于這個函數(shù)的具體調(diào)用看注釋即可。
1 /**
2 * @brief us延時程序,10us為一個單位
3 * @param
4 * @arg nTime: Delay_us( 1 ) 則實現(xiàn)的延時為 1 * 10us = 10us
5 * @retval 無
6 */
7 void Delay_us(__IO u32 nTime)
8 {
9 TimingDelay = nTime;
10
11 while (TimingDelay != 0);
12 }
函數(shù)Delay_us()中我們等待TimingDelay為0,當(dāng)TimingDelay為0的時候表示延時時間到。變量TimingDelay在中斷函數(shù)中遞減,即SysTick每進(jìn)一次中斷即10us的時間TimingDelay遞減一次。
SysTick中斷服務(wù)函數(shù)
1 void SysTick_Handler(void)
2 {
3 TimingDelay_Decrement();
4 }
中斷復(fù)位函數(shù)調(diào)用了另外一個函數(shù)TimingDelay_Decrement(),原型如下:
1 /**
2 * @brief 獲取節(jié)拍程序
3 * @param 無
4 * @retval 無
5 * @attention 在 SysTick 中斷函數(shù) SysTick_Handler()調(diào)用
6 */
7 void TimingDelay_Decrement(void)
8 {
9 if (TimingDelay != 0x00) {
10 TimingDelay--;
11 }
12 }
TimingDelay的值等于延時函數(shù)中傳進(jìn)去的nTime的值,比如nTime=100000,則延時的時間等于100000*10us=1s。
主函數(shù)
1 int main(void)
2 {
3 /* LED 端口初始化 */
4 LED_GPIO_Config();
5
6 /* 配置SysTick 為10us中斷一次,時間到后觸發(fā)定時中斷,
7 *進(jìn)入stm32fxx_it.c文件的SysTick_Handler處理,通過數(shù)中斷次數(shù)計時
8 */
9 SysTick_Init();
10
11 while (1) {
12
13 LED_RED;
14 Delay_us(100000); // 10000 * 10us = 1000ms
15
16 LED_GREEN;
17 Delay_us(100000); // 10000 * 10us = 1000ms
18
19 LED_BLUE;
20 Delay_us(100000); // 10000 * 10us = 1000ms
21 }
22 }
主函數(shù)中初始化了LED和SysTick,然后在一個while循環(huán)中以1s的頻率讓LED閃爍。
上面的實驗,我們是使用了中斷,而且經(jīng)過多個函數(shù)的調(diào)用,還使用了全局變量,理解起來挺費勁的,其實還有另外一種更簡潔的寫法。我們知道,systick的counter從reload值往下遞減到0的時候,CTRL寄存器的位16:countflag會置1,且讀取該位的值可清0,所有我們可以使用軟件查詢的方法來實現(xiàn)延時。具體代碼見代碼 183和代碼 184,我敢肯定這樣的寫法,初學(xué)者肯定會更喜歡,因為它直接,套路淺。
代碼 183 systick 微秒級延時
1 void SysTick_Delay_Us( __IO uint32_t us)
2 {
3 uint32_t i;
4 SysTick_Config(SystemCoreClock/1000000);
5
6 for (i=0; i
7 // 當(dāng)計數(shù)器的值減小到0的時候,CRTL寄存器的位16會置1
8 while ( !((SysTick->CTRL)&(1<<16)) );
9 }
10 // 關(guān)閉SysTick定時器
11 SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;
12 }
代碼 184 systick 毫秒級延時
1 void SysTick_Delay_Ms( __IO uint32_t ms)
2 {
3 uint32_t i;
4 SysTick_Config(SystemCoreClock/1000);
5
6 for (i=0; i
7 // 當(dāng)計數(shù)器的值減小到0的時候,CRTL寄存器的位16會置1
8 // 當(dāng)置1時,讀取該位會清0
9 while ( !((SysTick->CTRL)&(1<<16)) );
10 }
11 // 關(guān)閉SysTick定時器
12 SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
13 }
另外一種更簡潔的定時編程
在這兩個微秒和毫秒級別的延時函數(shù)中,我們還是調(diào)用了SysTick_Config這個固件庫函數(shù),有關(guān)這個函數(shù)的說明具體見代碼 185。配套代碼注釋理解即可。其中SystemCoreClock是一個宏,大小為72000000,如果不想使用這個宏,也可以直接改成數(shù)字。
代碼 185 systick 配置函數(shù)
1 // 這個固件庫函數(shù)在 core_cm3.h中
2 static __INLINE uint32_t SysTick_Config(uint32_t ticks)
3 {
4 // reload 寄存器為24bit,最大值為2^24
5 if (ticks > SysTick_LOAD_RELOAD_Msk) return (1);
6
7 // 配置 reload 寄存器的初始值
8 SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;
9
10 // 配置中斷優(yōu)先級為 1<<4 -1 = 15,優(yōu)先級為最低
11 NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
12
13 // 配置 counter 計數(shù)器的值
14 SysTick->VAL = 0;
15
16 // 配置systick 的時鐘為 72M
17 // 使能中斷
18 // 使能systick
19 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
20 SysTick_CTRL_TICKINT_Msk |
21 SysTick_CTRL_ENABLE_Msk;
22 return (0);
23 }
上一篇:第19章 通訊的基本概念—零死角玩轉(zhuǎn)STM32-F429系列
下一篇:第17章 EXTI—外部中斷/事件控制器—零死角玩轉(zhuǎn)STM32-F429系列
推薦閱讀
史海拾趣
近年來,隨著電子行業(yè)的競爭日益激烈和市場環(huán)境的不斷變化,ANSHAN公司面臨著前所未有的挑戰(zhàn)。然而,公司始終保持著清醒的頭腦和堅定的信心,積極應(yīng)對各種挑戰(zhàn)。公司不斷調(diào)整戰(zhàn)略方向,優(yōu)化產(chǎn)品結(jié)構(gòu),加大創(chuàng)新力度,推出了一系列具有競爭力的新產(chǎn)品。同時,公司還積極拓展新的市場領(lǐng)域和合作伙伴,為公司的持續(xù)發(fā)展注入了新的動力。
這五個故事展示了ANSHAN公司在電子行業(yè)發(fā)展中不斷克服困難、取得成就的歷程。從創(chuàng)業(yè)初期的艱辛與堅持,到技術(shù)突破與產(chǎn)品升級,再到市場拓展與品牌建設(shè)、人才培養(yǎng)與團隊建設(shè)以及應(yīng)對挑戰(zhàn)與持續(xù)創(chuàng)新,ANSHAN公司始終保持著堅定的信念和不懈的努力,在電子行業(yè)中譜寫了一曲曲壯麗的篇章。
Esterline Power Systems深知人才是企業(yè)發(fā)展的核心動力。因此,公司高度重視人才培養(yǎng)和團隊建設(shè)。公司建立了完善的培訓(xùn)體系,為員工提供多元化的培訓(xùn)和發(fā)展機會。同時,公司還注重營造良好的企業(yè)文化氛圍,鼓勵員工積極參與團隊合作和創(chuàng)新實踐。這些舉措不僅提高了員工的專業(yè)技能和綜合素質(zhì),也增強了公司的凝聚力和競爭力。
進(jìn)入21世紀(jì)后,隨著全球電子市場的競爭加劇,Goldentech意識到單靠技術(shù)創(chuàng)新已不足以維持其市場地位。因此,公司開始積極尋求與行業(yè)領(lǐng)先企業(yè)的戰(zhàn)略合作。通過與一家知名芯片設(shè)計公司的深度合作,Goldentech成功將其高性能離散半導(dǎo)體器件集成到對方的芯片設(shè)計中,從而實現(xiàn)了產(chǎn)品的廣泛應(yīng)用。這一合作不僅擴大了Goldentech的市場份額,還提升了其品牌知名度和行業(yè)影響力。
Digital Voice Systems, Inc.(DVSI)于1988年成立,當(dāng)時正值數(shù)字通信技術(shù)的興起階段。公司創(chuàng)始人憑借對語音編解碼技術(shù)的深刻理解和前瞻性的市場洞察力,決定投身于這一領(lǐng)域。他們開發(fā)出了具有專利保護(hù)的基于魯棒性多帶激勵模型(MBE Model)的低碼率語音壓縮算法,如IMBE和AMBE編解碼系統(tǒng)。這些算法在當(dāng)時的市場上獨樹一幟,為DVSI贏得了第一桶金。
在創(chuàng)立初期,DVSI面臨著資金、技術(shù)、市場等多方面的挑戰(zhàn)。然而,他們憑借著堅定的信念和不懈的努力,逐步克服了這些困難。他們不斷投入研發(fā),優(yōu)化算法,提高產(chǎn)品的性能和穩(wěn)定性;同時,他們積極開拓市場,與各大通信設(shè)備制造商建立合作關(guān)系,將產(chǎn)品推向市場。
隨著時間的推移,DVSI的產(chǎn)品逐漸在市場上獲得了認(rèn)可。他們的編解碼系統(tǒng)被廣泛應(yīng)用于移動通信、衛(wèi)星通信、軍事通信等領(lǐng)域,為客戶提供了高效、穩(wěn)定的語音通信解決方案。DVSI也因此逐漸嶄露頭角,成為了電子行業(yè)中一顆耀眼的明星。
故事二至五框架概述
- 技術(shù)創(chuàng)新與突破:DVSI在語音編解碼技術(shù)方面的持續(xù)創(chuàng)新,如推出新一代的高效壓縮算法,進(jìn)一步提升了產(chǎn)品的競爭力。
- 市場拓展與國際化:隨著公司實力的增強,DVSI開始拓展國際市場,與全球多家知名企業(yè)建立合作關(guān)系,實現(xiàn)了國際化發(fā)展。
- 合作與競爭:在電子行業(yè)中,DVSI與其他企業(yè)的合作與競爭并存。他們通過合作共贏的方式,共同推動行業(yè)的發(fā)展;同時,也面臨著來自競爭對手的挑戰(zhàn)和競爭壓力。
- 企業(yè)文化與團隊建設(shè):DVSI注重企業(yè)文化建設(shè),倡導(dǎo)創(chuàng)新、協(xié)作、共贏的價值觀。他們注重團隊建設(shè),吸引了一批優(yōu)秀人才加入公司,為公司的發(fā)展提供了有力的人才保障。
以上故事和框架概述僅供參考,您可以根據(jù)這些線索進(jìn)一步挖掘和編寫關(guān)于DVSI公司的故事。
隨著Helium在物聯(lián)網(wǎng)領(lǐng)域的不斷突破和發(fā)展,其市場認(rèn)可度逐漸提升。在2021年,Helium通過Token銷售完成了1.11億美元的融資;次年年初,又以12億美元估值完成了2億美元的D輪融資。這些融資的成功不僅為Helium提供了充足的資金支持,也進(jìn)一步驗證了其在物聯(lián)網(wǎng)和區(qū)塊鏈領(lǐng)域的商業(yè)價值和發(fā)展?jié)摿ΑM瑫r,Helium還吸引了眾多明星機構(gòu)和投資者的青睞,為其未來的發(fā)展奠定了堅實的基礎(chǔ)。
Helium公司成立于2013年,由Shawn Fanning、Amir Haleem和Sean Carey共同創(chuàng)立。在創(chuàng)立初期,Helium專注于物聯(lián)網(wǎng)無線網(wǎng)絡(luò)技術(shù)的研究,但并未迅速獲得市場關(guān)注。這一時期,電子行業(yè)正處于創(chuàng)新與轉(zhuǎn)型階段,物聯(lián)網(wǎng)作為新興領(lǐng)域展現(xiàn)出巨大潛力。Helium團隊預(yù)見到了物聯(lián)網(wǎng)的發(fā)展趨勢,但由于缺乏明確的商業(yè)模式,其網(wǎng)絡(luò)發(fā)展并未大規(guī)模鋪開。然而,這段時期的積累為Helium后續(xù)的技術(shù)突破和市場拓展奠定了堅實基礎(chǔ)。
各位大蝦好: 在使用Vxworks編程的時候使用的是多任務(wù)編程。有一個比較大的全局結(jié)構(gòu)變量。 我在一個任務(wù)中調(diào)用了該全局結(jié)構(gòu)變量。然后進(jìn)入了一個函數(shù)調(diào)用。在我調(diào)用該函數(shù)之前全局所有域 ...… 查看全部問答∨ |
|
本人做一個linux 圖象采集,然后全速寫入優(yōu)盤的小系統(tǒng),現(xiàn)在的問題是,在圖片采 集存儲的前20秒可以以每幀8秒的速度寫(每張圖片約150K) ,但是超過20秒后,速度明 顯下降(攝像頭和優(yōu)盤通過了一個usb hub 1.1連接到開發(fā)板同一usb口),基本為每秒 一幀, ...… 查看全部問答∨ |
|
最近我買了一塊優(yōu)龍公司的DEMO板, 但我想對該硬件及WINCE 系統(tǒng)裁剪,我該怎么 裁剪軟件這塊呢, 能舉個例子嗎,或電子教程啦, 謝謝… 查看全部問答∨ |
電子圍欄具有怎樣的發(fā)展前景?電子圍欄的市場能持續(xù)多久? 聯(lián)騰葉志鋒 我們認(rèn)為國內(nèi)電子圍欄產(chǎn)品、行業(yè)的發(fā)展市場巨大,方興未艾,前景廣闊。一到二年后又會進(jìn)入一個動態(tài)平衡期,平衡期內(nèi)電子圍欄市場將趨于穩(wěn)定發(fā)展。 (1)市場前景分析: 自2000年起,我 ...… 查看全部問答∨ |
請教各位大俠:我是2407的初學(xué)者,用的是AHDX510仿真器,硬件連接都顯示正常,但是打開CCS時顯示 NOT CONNECTED 請問這是什么原因啊?怎么解決呢? 謝謝各位!… 查看全部問答∨ |
|
節(jié)能減排 —— 終于想到“網(wǎng)絡(luò)”這個詞 我的同事小白最近總是心事煩亂、緊張兮兮。用她的話說,就是:“每天睜眼就一腦門子‘官司’,八竿子打不著的事兒也老惦記著,神經(jīng)老是處于緊繃狀態(tài)!”而一回到家,她整個人就像個泄了氣的皮球,躺倒床上起不來了。 &nb ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌穩(wěn)居微控制器領(lǐng)域榜首,鞏固其在全球車用半導(dǎo)體市場的領(lǐng)導(dǎo)地位
- 迅為imx6ull開發(fā)板使用c語言調(diào)用shell命令控制led燈
- 迅為IMX8MM開發(fā)板Android編譯環(huán)境搭建
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的使用
- 迅為ITOP4412開發(fā)板Qt界面添加圖片
- 迅為IMX6開發(fā)板OTA遠(yuǎn)程升級-SWUpdata概述和使用
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的搭建
- 迅為IMX6開發(fā)板Buildroot文件系統(tǒng)4G撥號上網(wǎng)工具測試
- 實驗分享丨迅為IMX6ULL開發(fā)板點亮第一個led燈
- TDK推出第一款嵌入式柵極驅(qū)動器- 加強EV熱系統(tǒng)效率
- LAB后輪轉(zhuǎn)向排行榜:從高端到普及,后輪轉(zhuǎn)向也要白菜化了
- 子彈都不怕的動力電池,為何碰撞還起火?
- 從18650到21700再到大圓柱電池 新電池帶來什么好處?
- 國外機器人選手Apptronik:無縫接入“人類工人崗位”
- 孚能科技/清陶能源等企業(yè)固態(tài)電池專利“曝光”!
- 固態(tài)電池目前的消費者是股民,你要的量產(chǎn)車還早
- 重磅!全固態(tài)電池國家戰(zhàn)略全面啟動
- 方案解讀 | X9SP 單芯片艙泊一體
- 用于車身控制模塊中 22 路多開關(guān)檢測接口(MSDI)芯片 SGMCD1020Q
- 虛擬和增強現(xiàn)實技術(shù)可支持更廣泛領(lǐng)域創(chuàng)新應(yīng)用
- 360發(fā)布2017智能網(wǎng)聯(lián)汽車信息安全年度報告
- 直擊CITE2019:各機器人企業(yè)放“大招”助力電子制造
- 雙屏交互設(shè)計,傻瓜駕駛模式,大眾途銳隱藏了哪些黑科技
- 智能自動垃圾桶的設(shè)計思路
- 5G和物聯(lián)網(wǎng)撐腰 IC載板雙雄運營回升
- 外媒:特朗普讓貿(mào)易逆差更嚴(yán)重
- 全球智能手機屏幕產(chǎn)值達(dá)107億美元
- 商湯科技攜手OPPO R17 Pro SensePosture3D人體骨架檢測
- 紅米新機:后置4800萬像素AI雙攝