Skip to content

Latest commit

 

History

History
170 lines (83 loc) · 5.1 KB

近期学习报告5.16.md

File metadata and controls

170 lines (83 loc) · 5.1 KB

近期学习报告

定时器中断实验 :

定时器时钟:

CK_INT(默认内部时钟):

  • AHB——经过APB1预分频——产生F(CK_PSC)时钟

    预分频系数不为1时,时钟CK_INT=2APB1时钟

    image-20200426005749862

    定时器的实现

    image-20200426010344957

    时间计算公式:

    image-20200426012123287

    实际代码编写:

    新建自定义工程方法:在HARDWARE新建TIMER文件夹,新建timer.c和timer.h文件

    打开keil的项目,加入timer相关文件,导入头文件路径,image-20200426012109785

    并编译,产生h文件,打开头文件进行编译。

    time.c文件

    第一步使能时钟

    image-20200430193047096

    第二步初始化定时器参数

    image-20200430193218177

    在这一步中首先定义了变量

    image-20200430193318534

    在定时器函数TIM_TimeBaseInit()中

    image-20200430193344685

    第一个参数TIMx代表了计时器名称,这里选择了TIM3,第二个参数为结构体指针

    其结构体为

    image-20200430193722448

    主要为预分频系数,计数模式的选择,自动重装周期值,以及设置时钟分频因子,最后一个在高级定时器才会使用

    第三步

    使能中断,并设置中断优先级

    image-20200430194741355

    ​ 先定义了中断的变量

    image-20200430194113717

    使能中断通过

    void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

    实现

    image-20200430194420047

    PS:函数 void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)

    该函数的作用为开启定时器

    第四步

    设置中断服务函数

    image-20200430194143774

    用来读取中断状态寄存器的值判断中断类型的函数:

    ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)

    该函数的作用是,判断定时器 TIMx 的中断类型 TIM_IT 是否发生中断(SET=1)

    清除中断标志位的函数:

    void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)

time.h文件

image-20200430195500866

主函数文件

image-20200430195534502

TIM3_Int_Init()传入了自动装载值和预分频系数,定时500ms。

项目

更新了加密部分和红外检测人数部分

image-20200516195417858

image-20200516195434150

结构体

作用:存放多种不同类型变量

写法:struct 结构体名称()

​ {

​ } 结构体变量名;

访问;结构体变量名.成员变量名

输入: scanf("类型",&结构体名.成员变量名)

输出: printf("类型",结构体.成员变量名)

结构体数组:

第一种:

image-20200516213536355

第二种;

image-20200516213613381

其中每个成员为结构体数组的一个元素.

结构体指针:

结构体指针的初始化;

struct 结构体名称 * 指针;

指针 = &结构体变量名;

访问成员:

​ 第一种:(*结构体指针).成员名

​ 第二种:结构体指针->成员名

传递结构体:

结构体可以作为参数传入了另一个结构体。

struct 结构体名称 函数名(结构体)

小结:

结构体是一种数据类型,既可以作为多种类型变量的存储,也可以作为函数,还可以作为参数传入函数