stm32f4 systick 中断时钟中断和tpm中断最小定时时间分别是多少

STM32 系统滴答定时器(Systick)
彻底研究解读
STM32 系统滴答定时器(Systick)
彻底研究解读
STM32 系统滴答定时器(Systick)&&彻底研究解读SysTick 起那些 TIM 定时器可以说简单多啦~~~~~哥的心情也好了不少,嘎嘎!!ARM&&Cortex-M3 内核的处理器内部包含了一个 SysTick 定时器,它是一个24 位的倒计数定时器,注意,是倒计数!当计到 0 时它就会从 LOAD 寄存器中自动重装载定时初值。只要不把 CTRL 寄存器中的 ENABLE 为清 0,它就永不停息!遗憾的是,Sy sTick 定时器在《STM32 参考手册》里一个屁都没放,只有在《ARM&&Cortex-M3 技术参考手册》和《ARM&&Cortex-M3 权威指南》才找到相关寄存器的介绍。一、SysTick 的时钟来源我先来看看 STM32 的时钟树The RCC feeds the Cortex Sy stemTimer (SysTick) external clock with&&the AHB clock(HCLK) divided by&&8.The SysTick can work either with&&this clock or with the Cortex clock(HCLK),&&configurable in the Sy sTick Control and Status Register. 上面这段话的意思是,SysTick的时钟来源可以是HCLK的8分频或就是HCLK,具体是哪种可通过配置“控制和状态寄存器(CTRL)”来选择。二、SysTick的寄存器简介SysTick的寄存器一共有4个。控制和状态寄存器CTRL(复位值0x)位段&&名称&&类型&&描述16&&COUNTFLAG&&只读&&计数到0时置1;读取该位将清0 2&&CLKSOURCE&&可读可写&&时钟来源& & 0=HCLK/8;1=HCLK 1&&TICKINT&&可读可写&&1=计数到0时产生Sy sTick异常请求0&&ENABLE&&可读可写&&使能位,即定时器的开关,1有效重装值寄存器LOAD(复位值不可预测)位段&&名称&&类型&&描述23:0& &RELOAD&&可读可写&&当计数到0时将被重装载的值当前值寄存器VAL(复位值不可预测)位段&&名称&&类型&&描述23:0&&CURRENT&&可读可写读取时返回当前倒计数的值;向该寄存器写入任意值都可以将其清除变为0。清0 该寄存器还会导致CTRL寄存器的COUNTFLAG&&位清零。另外还有一个校准值寄存器CALIB,暂时用不到,先不刁它!三、SysTick的库函数1、寄存器定义在哪里?答:在core_cm3.h中!ty pedef struct { __IO uint32_t CTRL;__IO uint32_t LOAD; __IO uint32_t V AL;__I& & uint32_t CALIB; } SysTick_T …#define SysTick& & ((SysTick_Ty pe *) SysTick_BASE)2、函数在哪里?在V3.3的函数库中关于SysTick的函数只有两个。一个是在misc.C文件中的SysTick_CLKSourceConfig函数,它是一个时钟源配置函数;另一个是在core_cm3.h文件中的SysTick_Config函数,它的输入参数只有一个,传给了重装值寄存器LOAD,另外还将VAL寄存器清0了,此外还将CTRL寄存器中的[2:0]三位都设为了1,分别是使用HCLK时钟,允许异常请求,开启计数器。在 misc.C 文件最后有下面一个函数/** *@功能:&&配置 SysTick 时钟源*@输入参数:&&SysTick_CLKSource:&&指定 SysTick 时钟源. *&&该参数可以是以下其中一个值: * @ SysTick_CLKSource_HCLK_Div8:&&AHB 时钟 8 分频作为 Sy sTick 时钟源* @ SysTick_CLKSource_HCLK: AHB 时钟作为 SysTick 时钟源. */ void SysTick_CLKSourceConfig(uint32_t Sy sTick_CLKSource) {/*&&参数检查&&*/assert_param(IS_SYSTICK_CLK_SOURCE(Sy sTi ck_CLKSource));if(SysTick_CLKSource ==&&SysTick_CLKSource_HCLK) {SysTick->CTRL |= SysTi ck_CLKSource_HCLK;} else{SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;}}在 core_cm3.h 中有一个 SysTick_Config 函数/* ###############& && &&&Sy sTick&&函数& & ################### */#if (!defined(__Vendor_Sy sTickConfig )) ||(__Vendor_SysTickConfig&&== 0) /*** @功能&&初始化并开启 Sy sTick 计数器及其中断*@输入参数& & ticks& & 两次中断间的 ticks 数值*@返回值&&1 =&&失败, 0=成功*&&初始化系统滴答定时器及其中断并开启系统滴答定时器在自由运行模式下以产生周期中断*/static __INLINE uint32_t SysTick_Config(uint32_t ticks) {if(ticks > SysTick_LOAD_RELOAD_Msk)&&return(1);&&/*&&重装值超过了 24 位,是不可能的。返回失败值 0 */& && && && && && && && && && && && && && && &&&SysTick->LOAD&&=(ticks & SysTick_LOAD_RELOAD_Msk) - 1; /*&&设置重装载寄存器&&*/NVIC_SetPriority(SysTick_IRQn, ( 1<<__NVIC_PRIO_BITS) - 1);&&/*&&设置优先级&&for Cortex-M0&&系统中断&&*/SysTick->VAL&&= 0;& && && && &&&/*&&装载计数器值(当前计数值清 0)&&*/SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |Sy sTick_CTRL_TICKINT_Msk| SysTick_CTRL_ENABLE_M& && &/* 使能 Sy sTick 中断请求和 Sy stick 定时*/return(0);& && && & /*&&成功,返回 0 */}#endif3、编写一个精确延时函数!鉴于SysTick的寄存器比较少,库函数也没写出啥玩意。所以完全有信心用寄存器的方法写出一个SysTick精确延时函数。偷学了网上的一点程序,写出了如下的函数,比网上的还精简了几行,哈哈!/*&&微秒级精确延时函数&&*/ void Delay_us(uint32_t n)&&////////延时多少微秒,n 就输入多少!{SysTick->LOAD=72*n;& && && & //装载计数值,因为时钟 72M,72 次在 1μsSysTick->CTRL=0x;//时钟来源设为为 HCLK(72M),打开定时器while(! (SysTick->CTRL&0x)); //等待计数到 0SysTick->CTRL=0x;//关闭定时器}编写一个点亮LED的函数测试一下。int main(void) {GPIO_Configuration();while(1) {GPIO_SetBits(GPIOD, GPIO_Pin_3);& && &//输出高电平Delay_us(10);& && && && && && && && && && && && &//精确延时 10μsGPIO_ResetBits(GPIOD, GPIO_Pin_3);&&//输出低电平Delay_us(10);& && && && && && && && && && && && &//精确延时 10μs}}经示波器测试,发现确实很准,嘎嘎~~~△X=10.5μs,那0.5μs的误差来自哪里呢?因为要调用GPIO和Delay _us函数,包括Dealy _us函数中的几条设置语句, 所以说还是相当准的!嘎嘎&&~~~~~~~~~~
发表评论:
TA的最新馆藏stm32笔记:Systick系统滴答定时器 - 嘎子的博客 - ITeye技术网站
博客分类:
Systick :系统心跳定时器,提供系统节拍
裸机程序中可作为独立的延时定时器用途:1.产生操作系统的时钟节拍2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号153.作为一个闹铃测量时间用于测量时间,
但当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作它有四个寄存器STK_CSR, 0xE000E010 -- 控制寄存器 STK_LOAD, 0xE000E014 -- 重载寄存器 STK_VAL, 0xE000E018 -- 当前值寄存器 STK_CALRB, 0xE000E01C -- 校准值寄存器stm32的时钟源选择外部时钟源时,则Systick时钟为HCLK /8选择内核时钟源时,则Systick时钟为HCLK延时编程原理systick定时器是24位的递减计数器,设定初值并使能它后,它会每个系统时钟周期计数器减1,计数到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息.延时编程步骤1.计算出产生1us 需要多少个时钟周期 fac_2.计算出RELOAD寄存器的值 也就是产生相应延时所需要的时钟周期数 RELOAD=fac_us * nus3.开启计数4.循环检测计数到0的标志位;5.清空计数器,关闭定时器=======================================SysTick异常配置步骤1对CTRL//LOAD/VAL三个寄存器进行了配置,2初始化SysTick使用的时钟,3清除系统当前值,装入重装值,4使能SysTick,使SysTick能响应中断=======================当SysTick定时器计到0时,将把COUNTFLAG位置位;而下述方法可以对其清零: 1.读取SysTick 控制及状态寄存器(STCSR) 2.往SysTick 当前值寄存器(STCVR)中写任何数据
只有当VAL 值为0 时,计数器自动重载RELOAD======================库函数 使用ST的函数库使用systick的方法,严格按照以下顺序: 1、调用SysTick_CounterCmd() -- 失能SysTick计数器 2、调用SysTick_ITConfig () -- 失能SysTick中断 3、调用SysTick_CLKSourceConfig() -- 设置SysTick时钟源。 4、调用SysTick_SetReload() -- 设置SysTick重装载值。 5、调用SysTick_ITConfig () -- 使能SysTick中断 6、调用SysTick_CounterCmd() -- 开启SysTick计数器Systick中断服务函数void SysTick_Handler(void);==========================寄存器版代码注解使用外部8M时钟,锁相环里出来的频率是72M,AHB预分频后是72M,systick固定HCLK时钟的1/8,即9M,那么延时1us是9个时钟
void delay_init(u8 SYSCLK)
//系统时钟是72MHz,SYSCLK=72
SysTick-&CTRL &= 0 //bit2清0,也就是配置选择外部时钟
fac_us=SYSCLK/8; //硬件8分频,fac_us得出的值是要给下面的时钟函数用的
fac_ms =(u16)fac_us*1000;
void delay_us(u32 nus)
//nus假如为10us
SysTick-&LOAD = nus*fac_
//延时10us的话就是
10*9=90,装到load寄存器中
SysTick-&VAL=0x00;//计数器清0,因为currrent字段被手动清零时,load将自动重装到VAL中
SysTick-&CTRL = 0x01;//配置使异常生效,也就是计数器倒数到0时将发出异常通知
temp = SysTick-&CTRL;
//时间到了之后,该位将被硬件置1,但被查询后自动清0
while(temp & 0x01 && !(tmep &(1&&16))); //查询
SysTick-&CTRL = 0x00;
//关闭计数器
SysTick-&VAL = 0x00;
//这个while循环,判断如果Systick还在Enable的状态,并且计数器还没数到0,就不停的循环把当前的SysTick-&CTRL寄存器值写入变量temp,继续下一次判断。当Systick被Disable或者计数器数到0了,就停止循环还有一个注意点:LOAD寄存器是24位的 最大值0xffffff那么延时最大值计算公式为nms&=0xffffff*8*1000/SYSCLK (SYSCLK单位Hz)则nms的最大值为ms ,即1864毫秒
浏览 14334
xouou_53320
浏览: 270747 次
lastSeries 写道前辈,是不是在工作以后连System ...
前辈,是不是在工作以后连System.out.println( ...
chuanwang66 写道不过改了iconv.exe路径也不 ...
正在学习,多谢分享
不过改了iconv.exe路径也不能用。。。。关于STM32的systick定时器的详细说明
关于STM32的systick定时器的详细说明
ARM学习《九》——关于STM32的systick定时器的详细说明:& & & & & &
ST STM32F10XXXNVICNVICCotex-M3systick
systick定时器和我上面说的情况一样,在手册中根本没有介绍。我费了九牛二虎之力才在一个犄角格拉里找到systick定时器的英文版的说明。在Cotex-M3有介绍,为什么要找STM32的介绍,是因为功能设置上还有点区别。首先看一下systick定时器的作用,下面是Cotex-M3里的一段话:
SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
Cortex‐M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同,你需要检视芯片的器件手册来决定选择什么作为时钟源。(知道我为什么找ST关于systick的说明了吧)。
下面介绍STM32中的systick,Systick NVIC4
STK_CSR,& && &&&0xE000E010&&--&&STK_LOAD,& &&&0xE000E014&&--&&STK_VAL,& && &&&0xE000E018&&--&&STK_CALRB,& &0xE000E01C&&--& &
首先看STK_CSR4t
位:ENABLE,Systick 使能位&&(0:关闭Systick功能;1:开启Systick功能)第1位:TICKINT,Systick 中断使能位& & (0:关闭Systick中断;1:开启Systick中断)第2位:CLKSOURCE,Systick时钟源选择&&(0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)第3位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零
STK_LOAD &
0STK_LOAD &240xFFFFFF
STK_VAL当前值寄存器:
也是个24位的寄存器,读取时返回当前倒计数的值,写它则使之清零,同时还会清除在SysTick 控制及状态寄存器中的COUNTFLAG 标志。
STK_CALRB &校准值寄存器:
这个寄存器好像目前的水平我还用不到,大体意思明白点,把英文说明放这吧:
位31 NOREF :1=没有外部参考时钟(STCLK 不可用)0=外部参考时钟可用
位30 SKEW:1=校准值不是准确的1ms 0=校准值是准确的1ms
位[23:0] :Calibration value
Indicates the calibration value when the SysTick counter runs on HCLK max/8 as external clock. The value is product dependent, please refer to the Product Reference Manual, SysTick Calibration Value section. When HCLK is programmed at the maximum frequency, the SysTick period is 1ms. If calibration information is not known, calculate the calibration value required from the frequency of the processor clock or external clock.
SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。要注意的是,当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。
下面我们就应用SysTick定时器来裸奔,把它作为一个定时器来用,还是老一套,在寄存器头文件中添加定义寄存器:
//*****************************************************************
//*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SystemTick-Register&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//*******************************************************************
#define SYSTICK_TENMS&&& (*((volatile unsigned long *)0xE000E01C))
#define SYSTICK_CURRENT& (*((volatile unsigned long *)0xE000E018))
#define SYSTICK_RELOAD&& (*((volatile unsigned long *)0xE000E014))
#define SYSTICK_CSR& &&&& (*((volatile unsigned long *)0xE000E010))
配置systick寄存器:
void SysTick_Configuration(void)
&& SYSTICK_CURRENT=0; //当前值寄存器
&& SYSTICK_RELOAD=20000; //重装载寄存器,系统时钟20M中断一次1mS
&& SYSTICK_CSR|=0x06;// HCLK作为Systick时钟,Systick中断使能位
中断处理:
void SysTick_Handler(void) //中断函数
extern unsigned long TimingD // 延时时间,注意定义为全局变量
SYSTICK_CURRENT=0;
if (TimingDelay != 0x00)
TimingDelay--;
利用systick的延时函数:
unsigned long TimingD& // 延时时间,注意定义为全局变量
SystemInit0();&&& //
stm32_GpioSetup (); //GPIO
SysTick_Configuration(); //配置systick定时器
GPIO_PORTB_ODR|=(1&&5);
GPIO_PORTB_ODR&=~(1&&5);
Delay(1000); //1S&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
实现了1S的精确延时,利用Delay(unsigned long nTime);配合systick定时器可以实现任意时间的精确延时,当然通过定时器TIMx也是可以这样做的,我只是用它来说明systick定时器的用法。
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&微信号:电路城
后使用快捷导航没有帐号?
微信号:电路城
查看: 7518|回复: 2
注册时间最后登录阅读权限40积分28精华0帖子
小打小闹, 积分 28, 距离下一级还需 22 积分
签到天数: 1 天连续签到: 1 天[LV.1]人海中人
STM32 系统滴答定时器(Systick)&&彻底研究解读
SysTick 起那些 TIM 定时器可以说简单多啦~~~~~哥的心情也好了不少,
ARM&&Cortex-M3 内核的处理器内部包含了一个 SysTick 定时器,它是一个
24 位的倒计数定时器,注意,是倒计数!当计到 0 时它就会从 LOAD 寄存器中
自动重装载定时初值。只要不把 CTRL 寄存器中的 ENABLE 为清 0,它就永不
停息!遗憾的是,Sy sTick 定时器在《STM32 参考手册》里一个屁都没放,只有
在《ARM&&Cortex-M3 技术参考手册》和《ARM&&Cortex-M3 权威指南》才找到相
关寄存器的介绍。
一、SysTick 的时钟来源
我先来看看 STM32 的时钟树
The RCC feeds the Cortex Sy stemTimer (SysTick) external clock with&&the AHB
clock(HCLK) divided by&&8.The SysTick can work either with&&this clock or with the
Cortex clock(HCLK),&&configurable in the Sy sTick Control and Status Register.
上面这段话的意思是,SysTick的时钟来源可以是HCLK的8分频或就是HCLK,
具体是哪种可通过配置“控制和状态寄存器(CTRL)”来选择。
二、SysTick的寄存器简介
SysTick的寄存器一共有4个。
控制和状态寄存器CTRL(复位值0x)
位段&&名称&&类型&&描述
16&&COUNTFLAG&&只读&&计数到0时置1;读取该位将清0
2&&CLKSOURCE&&可读可写&&时钟来源& & 0=HCLK/8;1=HCLK
1&&TICKINT&&可读可写&&1=计数到0时产生Sy sTick异常请求
0&&ENABLE&&可读可写&&使能位,即定时器的开关,1有效
重装值寄存器LOAD(复位值不可预测)
位段&&名称&&类型&&描述
23:0& &RELOAD&&可读可写&&当计数到0时将被重装载的值
当前值寄存器VAL(复位值不可预测)
位段&&名称&&类型&&描述
23:0&&CURRENT&&可读可写
读取时返回当前倒计数的值;向该寄存器
写入任意值都可以将其清除变为0。清0
该寄存器还会导致CTRL寄存器的
COUNTFLAG&&位清零。
另外还有一个校准值寄存器CALIB,暂时用不到,先不刁它!
三、SysTick的库函数
1、寄存器定义在哪里?答:在core_cm3.h中!
ty pedef struct
__IO uint32_t CTRL;
__IO uint32_t LOAD;
__IO uint32_t V AL;
__I& & uint32_t CALIB;
} SysTick_T
#define SysTick& & ((SysTick_Ty pe *) SysTick_BASE)
2、函数在哪里?
在V3.3的函数库中关于SysTick的函数只有两个。一个是在misc.C文件中的
SysTick_CLKSourceConfig函数,它是一个时钟源配置函数;另一个是在
core_cm3.h文件中的SysTick_Config函数,它的输入参数只有一个,传给了重装
值寄存器LOAD,另外还将VAL寄存器清0了,此外还将CTRL寄存器中的[2:0]
三位都设为了1,分别是使用HCLK时钟,允许异常请求,开启计数器。
在 misc.C 文件最后有下面一个函数
*@功能:&&配置 SysTick 时钟源
*@输入参数:&&SysTick_CLKSource:&&指定 SysTick 时钟源.
*&&该参数可以是以下其中一个值:
* @ SysTick_CLKSource_HCLK_Div8:&&AHB 时钟 8 分频作为 Sy sTick 时钟源
* @ SysTick_CLKSource_HCLK: AHB 时钟作为 SysTick 时钟源.
void SysTick_CLKSourceConfig(uint32_t Sy sTick_CLKSource)
/*&&参数检查&&*/
assert_param(IS_SYSTICK_CLK_SOURCE(Sy sTi ck_CLKSource));
if(SysTick_CLKSource ==&&SysTick_CLKSource_HCLK)
SysTick-&CTRL |= SysTi ck_CLKSource_HCLK;
SysTick-&CTRL &= SysTick_CLKSource_HCLK_Div8;
在 core_cm3.h 中有一个 SysTick_Config 函数
/* ###############& && &&&Sy sTick&&函数& & ################### */
#if (!defined(__Vendor_Sy sTickConfig )) ||(__Vendor_SysTickConfig&&== 0)
* @功能&&初始化并开启 Sy sTick 计数器及其中断
*@输入参数& & ticks& & 两次中断间的 ticks 数值
*@返回值&&1 =&&失败, 0=成功
*&&初始化系统滴答定时器及其中断并开启系统滴答定时器在自由运行模式下以产生周期中
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
if(ticks & SysTick_LOAD_RELOAD_Msk)&&return(1);&&/*&&重装值超过了 24 位,是不可
能的。返回失败值 0 */& && && && && && && && && && && && && && && &&&
SysTick-&LOAD&&=(ticks & SysTick_LOAD_RELOAD_Msk) - 1; /*&&设置重装载寄存器&&*/
NVIC_SetPriority(SysTick_IRQn, ( 1&&__NVIC_PRIO_BITS) - 1);&&/*&&设置优先级&&for
Cortex-M0&&系统中断&&*/
SysTick-&VAL&&= 0;& && && && &&&/*&&装载计数器值(当前计数值清 0)&&*/
SysTick-&CTRL = SysTick_CTRL_CLKSOURCE_Msk |
Sy sTick_CTRL_TICKINT_Msk| SysTick_CTRL_ENABLE_M& && &/*
使能 Sy sTick 中断请求和 Sy stick 定时*/
return(0);& && && & /*&&成功,返回 0 */
3、编写一个精确延时函数!
鉴于SysTick的寄存器比较少,库函数也没写出啥玩意。所以完全有信心用寄存
器的方法写出一个SysTick精确延时函数。偷学了网上的一点程序,写出了如下
的函数,比网上的还精简了几行,哈哈!
/*&&微秒级精确延时函数&&*/
void Delay_us(uint32_t n)&&////////延时多少微秒,n 就输入多少!
SysTick-&LOAD=72*n;& && && & //装载计数值,因为时钟 72M,72 次在 1μs
SysTick-&CTRL=0x;//时钟来源设为为 HCLK(72M),打开定时器
while(! (SysTick-&CTRL&0x)); //等待计数到 0
SysTick-&CTRL=0x;//关闭定时器
编写一个点亮LED的函数测试一下。
int main(void)
GPIO_Configuration();
GPIO_SetBits(GPIOD, GPIO_Pin_3);& && &//输出高电平
Delay_us(10);& && && && && && && && && && && && &//精确延时 10μs
GPIO_ResetBits(GPIOD, GPIO_Pin_3);&&//输出低电平
Delay_us(10);& && && && && && && && && && && && &//精确延时 10μs
经示波器测试,发现确实很准,嘎嘎~~~△X=10.5μs,那0.5μs的误差来自哪里
呢?因为要调用GPIO和Delay _us函数,包括Dealy _us函数中的几条设置语句, 所
以说还是相当准的!嘎嘎&&~~~~~~~~~~
注册时间最后登录阅读权限60积分196精华0帖子
仗剑闯荡, 积分 196, 距离下一级还需 104 积分
签到天数: 8 天连续签到: 1 天[LV.3]熟人面孔
谢谢楼主的分享
注册时间最后登录阅读权限40积分31精华0帖子
小打小闹, 积分 31, 距离下一级还需 19 积分
签到天数: 1 天连续签到: 1 天[LV.1]人海中人
谢谢分享!!!!!
站长推荐 /2
keysight示波器区域触发功能测验开始啦,下载应用文档,回答后面的几个选择题,答题即可参与转盘抽奖,分享还可以增加抽奖机会,便携式示波器、蓝牙折叠键盘,手机游戏手柄等你拿!
回答两个简单的小问题,即有机会获得麦开智能水杯、美的暖风机、智能防丢寻物贴片、小米VR眼镜、10元京东券~奖品那么多,问题那么简单,机不可失哦!实验3 timer定时器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验3 timer定时器
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 systick 中断优先级 的文章

 

随机推荐