当前位置: 首页 > 乐球直播在线
返回
列表

STM32F1开发规范教程 课件 ch03试验2——串口电子钟

发表时间: 2024-03-19 作者: 乐球直播在线

  STM32F1开发规范教程 课件 ch03试验2——串口电子钟pptx

  试验2——串口电子钟杰出工程师培育系列本书获深圳大学教材出书赞助STM32F1开发规范教程01试验内容试验内容将RunClock模块增加至STM32工程,并在应用层调用RunClock模块的API函数,完成依据STM32口的电子钟功用;将时钟的初始值设为23:59:50,经过核算机上的串口帮手每秒输出一次时刻值,格局为Nowisxx:xx:xx将编译生成的.hex或axf文件下载到STM32中心板;翻开口帮手软件,检查电子钟运转是不是正常。本试验最重要的包含以下内容02试验原理1.RunClock模块函数这两个文件坐落本书配套材料包的“04例程材料Material02串口电子钟试验AppRunClock”文件夹中。RunClock模块有API函数,分别是InitRunClockDispTime,下面临这6个API函数进行解说。RunClock模块由RunClockhRunClockc文件完成1.RunClock模块函数InitRunClock函数的功用是初始化RunClock模块,经过对sour个内部变量赋值0来完成。该函数的描绘如表3-1所示。tRunClock1.RunClock模块函数RunClockPer2Ms函数的功用是以2ms为最小单位运转时钟体系,该函数每履行500次,变量s_iSec递加一次。该函数的描绘如表3-2所示。2.RunClockPer2Ms1.RunClock模块函数PauseClock函数的功用是发动和暂停时钟。该函数的描绘如表3-3所示。3.PauseClock1.RunClock模块函数GetTimeVal函数的功用是获取当时时刻值,时刻值的类型由type决议该函数的描绘如表3-4所示。4.GetTimeVal1.RunClock模块函数SetTimeVal函数的功用是依据参数timeVal设置当时的时刻值,时刻值的类型由type决议。该函数的描绘如表3-5所示。5.SetTimeVal1.RunClock模块函数DispTime函数的功用是依据参数hourmin和sec显现当时的时刻,经过printf函数来完成。该函数的描绘如表3-6所示。6.DispTime函数调用结构图3-1为本试验的函数调用结构,Timer模块的TIM2用于发生2ms标志,TIM5用于发生1s标志Main模块经过获取和铲除2s1s标志完成Proc2msTask函数中的中心句子块每2ms履行一次,Proc1SecTask函数中的中心语块每1s履行一次。Mai模块调用RunClock模块的PauseClock函数发动时钟运转,通SetTimeVal函数设置初始时刻值;Proc2msTask函数调用RunClock模块的RunClockPer2Ms函数,完成RunClock模块内部静态变量s_iHour/s_iMin/s_iSec的计数功用,从而完成时钟的运转时刻显现是由RunClocl模块的DispTime函数调用printf句子输出完成的Prc1SecTask函数每秒调用一次DispTim函数。Proc1SecTaskProc2msTask和Proc1SecTask是本书常常用到的函数,它们的作业机制相似,下面以Proc2msTask函数为例阐明。程序清单3-1是Proc2msTask函数的完成,留意,需求每2m履行一次的代码一定要放在ifProc1SecTaskProc2msTask函数在main函数的while句子中被调用,每隔几微秒履行一次详细间限取决于各中止服务函数及Proc1SecTask函数的履行时刻。假如Proc2msTask函数约每10us履行一次,Get2msFlag函数用于读取2ms标志位的值并判别是否为1该标志位在TIM2的中止服务函数中被置为1,TIM2的中止服务函数每2ms行一次因而2ms标志位也是每2ms一次。假如2s标志位为1,则履行用户代码,履行完毕,铲除2ms志位,然后履行Proc1SecTask函数,接着持续判别2ms假如2ms标志位不为1,则履行Proc1SecTask函数然后持续判别2ms标志位main函数的while语详细履行进程如图3-2所示03试验过程过程1:首要,将“D:STM32KeilTestMateria02串口电子钟试验”文件夹仿制到“D:STM32KeilTestProduct”文件夹中。然后,双击运转“D:STM32KeilTestProduct02串口电子钟试验Project”文件夹中的STM32KeilPrjuvprojx,击工具栏中的西按钮进行编译。当BuildOutput栏中呈现FromBLF:creatinghexfile...时,表明现已成功生成hex文件,呈现0Error(s),0Warning(s)表明编译成功。最终,将axf文件下载到STM32的内部Flash调查STM32中心板上的两个LBD是否替换闪耀,一起翻开串口帮手,调查是不是秒输出一次ThisfirstSTM32F103ProjectbyZhangsan。假如两个LED替换闪耀口正常输出字符串,表明原始工程正确,能进入下一步操作。仿制并编译原始工程过程2:首要,将“D:STM32KeilTestProductl02串口电子钟试验ApplRunClock”文件夹中的RunClockc增加到App分组,详细操作可拜见2.3。然后,将“D:STM32KeilTestProduct\02串口电子钟试验AppRunClock”途径增加到IncudePaths栏,详细操作可拜见2.3节过程11增加RunClock文件对过程3:Project面板中,双击翻开Main.c文件,在Main.c文件的“包含头文件”区的最终增加代码#includeRunClock.h,如程序清单3-2所示。这样就可以在Mainc文件中调用RunClock模块的枚举界说和API函数等,完成对RunClock模块的操作。完善串口电子钟应用层过程3:在Main.c文件的IitSoftware函数中,增加调用InitRunClock函数的代码,如程序清单3-3所示,这样就完成了对RunClock模块的初始化。完善串口电子钟应用层过程3:在Main.c文件的IitSoftware函数中,增加调用InitRunClock函数的代码,如程序清单3-3所示,这样就完成了对RunClock模块的初始化。完善串口电子钟应用层过程3:在Mainc文件的Proc2msTask函数中,增加调用RunClockPer2Ms函数的代码,如程序清单3-RunClockPer2Ms函数的代码放在if句子中,这 样才表明RunClockPer2Ms 函数每2ms 履行一次 完善串口电子钟应用层过程3: 试验要求每秒输出一次时刻,因而,需求在 Mainc 件的Proc1SecTask函数中增加调用DispTime 函数的代 码。DispTime 函数的参数包含小时、分钟、秒,需求先 界说 hour sec时刻值变量,然后经过 GetTimeVal 函数获取这3 个时刻值代码如程序清单3-5 所示。这样就可以完成每秒获取一次时刻值( 包含小时、 分钟、秒) ,并经过STM32 的口发送到核算机的串口助 手显现出来。因为DispTime 函数是经过串口输出时刻的 ,因而,需求注释掉if 句子中的printf 句子。 完善串口电子钟应用层 过程3: PauseClock和SetTimeVal 函数的代码,如程序清单 3-6 所示。PauseClock 函数用于发动和暂停时钟, SetTimeVal 函数用于设置初始时刻值。下面依据实 验要求,将初始时刻设定为 23:59:50 ,然后经过 PauseClock 函数发动时钟。 完善串口电子钟应用层 过程4: 代码编写完成后,单击 画按钮进行编译。编译完毕后 ,Build Output 栏中呈现OError(s)0Warning() ,表明编 译成功。然后,拜见图2-33 ,经过Keil Vision5 软件将 axf 文件下载到STM32 中心板。下载完成后,翻开串口 帮手,可以正常的看到时刻值每秒输出一次,格局为 Nowisxx:xx:xx ,如图 3-3 所示。一起,可以正常的看到 STM32 中心板上的LED1 和LED2 替换闪耀,表明试验 成功。 编译及下载验证 谢谢观看 STM32F1 开发规范教程 杰出工程师培育系列 本书获深圳大学教材出书赞助