日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

stm32滴答计时器_STM32的系统滴答定时器(Systick)

發(fā)布時(shí)間:2024/9/27 windows 191 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32滴答计时器_STM32的系统滴答定时器(Systick) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.systick時(shí)鐘來源

2.SysTick庫函數(shù)

3.源碼

/**

*@}

*/

/** @defgroup SysTick_clock_source

*@{

*/

#define SysTick_CLKSource_HCLK_Div8? ? ((uint32_t)0xFFFFFFFB)

#define SysTick_CLKSource_HCLK? ? ? ? ?((uint32_t)0x00000004)

#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SysTick_CLKSource_HCLK) || \

((SOURCE) == SysTick_CLKSource_HCLK_Div8))

/**

*@brief? Configures the SysTick clocksource.

*@param? SysTick_CLKSource: specifies theSysTick clock source.

*? ?This parameter can be one ofthe following values:

*? ? ?@argSysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clocksource.

*? ? ?@arg SysTick_CLKSource_HCLK:AHB clock selected as SysTick clock source.

*@retval None

*/

void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)

{

/* Check the parameters */

assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));

if (SysTick_CLKSource == SysTick_CLKSource_HCLK)

{

SysTick->CTRL |= SysTick_CLKSource_HCLK;

}

else

{

SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;

}

}

/*##################################? ?SysTick function ############################################ */

#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0)

/**

*@brief? Initialize and start the SysTickcounter and its interrupt.

*

*@param? ?ticks? ?number of ticks between two interrupts

*@return? 1 = failed, 0 = successful

*

*Initialise the system tick timer and its interrupt and start the

*system tick timer / counter in free running mode to generate

*periodical interrupts.

*/

static __INLINE uint32_t SysTick_Config(uint32_t ticks)

{

if (ticks > SysTick_LOAD_RELOAD_Msk)? return (1);? ? ? ? ? ? /* Reload value impossible */

SysTick->LOAD? = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;? ? ? /* set reload register */

NVIC_SetPriority (SysTick_IRQn, (1VAL? ?= 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* Load the SysTick Counter Value */

SysTick->CTRL? = SysTick_CTRL_CLKSOURCE_Msk |

SysTick_CTRL_TICKINT_Msk? ?|

SysTick_CTRL_ENABLE_Msk;? ? ? ? ? ? ? ? ? ?/* Enable SysTick IRQ and SysTick Timer*/

return (0);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* Function successful */

}

#endif

#ifdefSYSCLK_FREQ_HSE

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_HSE;? ? ? ? /*!#elif defined SYSCLK_FREQ_24MHz

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_24MHz;? ? ? ? /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_36MHz

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_36MHz;? ? ? ? /*!#elif defined SYSCLK_FREQ_48MHz

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_48MHz;? ? ? ? /*!#elif defined SYSCLK_FREQ_56MHz

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_56MHz;? ? ? ? /*!#elif defined SYSCLK_FREQ_72MHz

uint32_t SystemCoreClock? ? ? ? ?= SYSCLK_FREQ_72MHz;? ? ? ? /*!#else /*!< HSI Selected as System Clock source */

uint32_t SystemCoreClock? ? ? ? ?= HSI_VALUE;? ? ? ? /*!< System Clock Frequency (Core Clock) */

#endif

///

/* Configure the SysTick */

SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);//8000000/1000=>1ms

/**

*This is the timer interrupt service routine.

*

*/

void SysTick_Handler(void)

{

/* enter interrupt */

rt_interrupt_enter();

rt_tick_increase();

/* leave interrupt */

rt_interrupt_leave();

}

本網(wǎng)站轉(zhuǎn)載的所有的文章、圖片、音頻視頻文件等資料的版權(quán)歸版權(quán)所有人所有,本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如果本網(wǎng)所選內(nèi)容的文章作者及編輯認(rèn)為其作品不宜公開自由傳播,或不應(yīng)無償使用,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。

總結(jié)

以上是生活随笔為你收集整理的stm32滴答计时器_STM32的系统滴答定时器(Systick)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。