stm32f103rbt6(stm32f103rbt6引脚图)「stm32f103rbt6引脚介绍」

  前面花了近一周的时间完成了STM32中关于复位与体系时钟的学习,终于,如今可以开始下一个任务了:SysTick。也不知道接着学这个对不对,但是感觉全都是跟时钟有关的东东,就放一起来学学,应该没什么题目吧。

  好吧,我不得不承认本身程度还不敷,在第一个板子(金牛STM32F107VCT6)上跑了一个程序,但是没能乐成,继承找缘故起因吧。

  接下来,我还是不断念,在别的一块板子(ALIENTEKSTM32F103RBT6)上面写了一个利用SysTick定时的代码,结果运行乐成,在这里分享出来,以作以后复习只用。

stm32f103rbt6(stm32f103rbt6引脚图) stm32f103rbt6(stm32f103rbt6引脚图)「stm32f103rbt6引脚介绍」 行业资讯

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  Delay_SysTick.H

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  /**

  **文件名称:Delay_SysTick.H

  **功能形貌:体系滴答及其延时的利用声明

  **硬件平台:STM32F10x

  **编译环境:Keiluversion4IDE

  **库版本:v3.5.0

  **版本信息:v0.0

  **编写作者:

  **编写时间:2011-11-26

  **附加阐明:无

  **修改记录:无

  **/

  #ifndef_DELAY_SYSTICK_H

  #define_DELAY_SYSTICK_H

  #include"stm32f10x.h"

  /*Privatefunctionprototypes-----------------------------------------------*/

  voidSysTick_Configuration(void);

  voidSysTickDelay(__IOuint32_tnTime);

  voidTimingDelay_Decrement(void);

  voidSysTick_Handler(void);

  #endif

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  Delay_SysTick.C

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  /**

  **文件名称:Delay_SysTick.C

  **功能形貌:体系滴答及其延时的利用

  **硬件平台:STM32F10x

  **编译环境:Keiluversion4IDE

  **库版本:v3.5.0

  **版本信息:v0.0

  **编写作者:

  **编写时间:2011-11-26

  **附加阐明:无

  **修改记录:2011-11-26将TimingDelay数据范例改为volatile

  **/

  /*Includes------------------------------------------------------------------*/

  //#include"main.h"

  #include"delay_systick.h"

  #include"stm32f10x.h"

  /*Privatetypedef-----------------------------------------------------------*/

  /*Privatedefine------------------------------------------------------------*/

  /*Privatemacro-------------------------------------------------------------*/

  /*Privatevariables---------------------------------------------------------*/

  volatileuint32_tTimingDelay;

  /*Privatefunctionprototypes-----------------------------------------------*/

  /*Privatefunctions---------------------------------------------------------*/

  /*SetupSysTickTimerfor1msecinterrupts.

  ------------------------------------------

  1.TheSysTick_Config()functionisaCMSISfunctionwhichconfigure:

  -TheSysTickReloadregisterwithvaluepassedasfunctionparameter.

  -ConfiguretheSysTickIRQprioritytothelowestvalue(0x0F).

  -ResettheSysTickCounterregister.

  -ConfiguretheSysTickCounterclocksourcetobeCoreClockSource(HCLK).

  -EnabletheSysTickInterrupt.

  -StarttheSysTickCounter.

  2.YoucanchangetheSysTickClocksourcetobeHCLK_Div8bycallingthe

  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8)justafterthe

  SysTick_Config()functioncall.TheSysTick_CLKSourceConfig()isdefined

  insidethemisc.cfile.

  3.YoucanchangetheSysTickIRQprioritybycallingthe

  NVIC_SetPriority(SysTick_IRQn,...)justaftertheSysTick_Config()function

  call.TheNVIC_SetPriority()isdefinedinsidethecore_cm3.hfile.

  4.ToadjusttheSysTicktimebase,usethefollowingformula:

  ReloadValue=SysTickCounterClock(Hz)xDesiredTimebase(s)

  -ReloadValueistheparametertobepassedforSysTick_Config()function

  -ReloadValueshouldnotexceed0xFFFFFF

  */

  /**

  *@briefConfiguretheSysTickclock.

  *@paramNone

  *@retvalNone

  */

  voidSysTick_Configuration(void)

  {

  /*SysTickclocksourceselect*/

  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

  /*Initializeandstartsystickclockanditsinterrupt*/

  if(SysTick_Config(SystemCoreClock/1000))

stm32f103rbt6(stm32f103rbt6引脚图) stm32f103rbt6(stm32f103rbt6引脚图)「stm32f103rbt6引脚介绍」 行业资讯

  {

  /*Captureerror*/

  while(1);

  }

  }

  /**

  *@briefInsertsadelaytime.

  *@paramnTime:specifiesthedelaytimelength,inmilliseconds.

  *@retvalNone

  */

  voidSysTickDelay(__IOuint32_tnTime)

  {

  TimingDelay=nTime;

  while(TimingDelay!=0);

  }

  /**

  *@briefDecrementstheTimingDelayvariable.

  *@paramNone

  *@retvalNone

  */

  voidTimingDelay_Decrement(void)

  {

  if(TimingDelay!=0x00)

  {

  TimingDelay--;

  }

  }

  /**

  *@briefThisfunctionhandlesSysTickHandler.

  *@paramNone

  *@retvalNone

  */

  voidSysTick_Handler(void)

  {

  TimingDelay_Decrement();

  }

  阐明:本次没有直接对寄存器操纵,由于是入门,以是没那么深入,先让板子跑起来再说吧,下面给出的参考资料中有对寄存器的讲授,很有代价,盼望能帮上各人。

  原文链接:https://www.eeworld.com.cn/mcu/article_2016101030295.html

    关键词:

    客户评论

    我要评论