好乐买的网站推广方式怎么在网站上做网页
2026/3/22 7:05:18 网站建设 项目流程
好乐买的网站推广方式,怎么在网站上做网页,免费的app软件大全,大连网络公司排名定时器归纳总页#xff1a; STM32——定时器-CSDN博客 一、定时器概述 1.1 软件定时原理 51单片机计时#xff0c;主频 12MHz#xff0c;1usfor(n) {__nop(); /* 空语句 执行时间1us */ } 使用纯软件的方式实现定时(延时)功能 但是不会很精准#xff0c;原因#xff1a…定时器归纳总页STM32——定时器-CSDN博客一、定时器概述1.1 软件定时原理51单片机计时主频 12MHz1us for(n) { __nop(); /* 空语句 执行时间1us */ }使用纯软件的方式实现定时(延时)功能但是不会很精准原因1.函数有压栈操作耗时2.有流水线指令执行可能是多个步骤共同执行。软件延时缺点1.延时不精准2.CPU死等所以需要外设硬件定时器1.2 定时器定时原理硬件使用精准的时基通过硬件的方式实现定时功能。核心就是计数器。原理1.3 STM32定时器分类1.4 STM32定时器特性表(常规定时器 F1系列)开发指南1.5 STM32基本、通用、高级定时器功能整体的区别二、基本定时器2.1 基本定时器简介F1F1-H7都是这两个基本定时器2.2 基本定时器框图总线挂载芯片手册12页参考手册56页。2.3 定时器计数模式以及溢出条件递减模式中心对齐模式2.4 基本定时器中断实验相关寄存器TIM6/TIM7定时器控制寄存器TIMx_CR1例子控制LED 1s亮2s灭如果计时满了才操作寄存器有一定的时延误差如果在计时结束前提前准备好值减少操作寄存器的时间误差。缓冲的作用提前准备减少误差定时器 DMA 中断使能寄存器TIMx_DIER定时器状态寄存器TIMx_CR1用于判断是否发生了更新中断由硬件置1软件清零。计数器TIMx_CNT计数器实时数值可用于设置计数器初始值。在计数器运行过程中也可进行写操作。定时器预分频器TIMx_PSC自动重装载寄存器(TIMx_ARR)实际作用的是影子寄存器。2.5 定时器溢出时间计算方法定时器溢出时间秒定时器的未分频的时钟源频率自动重装载寄存器的值需要 ARR1才是溢出时间预分频器寄存器的值真正的分频系数为PSC1推导数一个数的时间溢出计数的时间2.6 定时器中断实验配置步骤步骤HAL库函数备注主要寄存器1.配置定时器基础工作参数HAL_TIM_Base_Init()初始化定时器基础参数CR1、ARR、PSC2.定时器基础MSP初始化HAL_TIM_Base_MspInit()空函数用于存放配置NVIC、CLOCK、GPIO等的代码3.使能更新中断并启动计数器HAL_TIM_Base_Start_IT()使能更新中断并启动计数器DIER、CR14.设置优先级使能中断HAL_NVIC_SetPriority()HAL_NVIC_EnableIRQ()5.编写中断服务函数TIMx_IRQHandler()等此函数会调用定时器公共处理函数HAL_TIM_IRQHandler()会在此公共处理函数中调用各种callback函数处理各种中断SR6.编写定时器更新中断回调函数HAL_TIM_PeriodElapsedCallback()空函数定时器更新终端回调函数需要重新定义关键结构体1:TIM_HandleTypeDef或者直接搜索 TIM6句柄的初始化结构体TIM_Base_InitTypeDef1.由于基本定时器只允许递增计数模式也没有其他的寄存器来配置其他的计数模式。所以CounterMode成员对于基本定时器来说是无效的只有在通用、高级定时器才有效。2.由于基本定时器没有时钟分频因子的寄存器。所以只有在通用、高级定时器才有效。3.由于F1的基本、通用定时器没有重复计数器的寄存器。所以只有在高级定时器才有效。总结基本定时器用到了Prescaler、Period、AutoReloadPreload三个结构体成员2.7 编程实战基本定时器中断实验【免费】基本定时器中断实验工程资源-CSDN下载https://download.csdn.net/download/PinnsiR/92282791更新中断的两种方式1.定时器溢出硬件伴随着 更新事件 和 更新中断 的产生例程使用此方式2.软件通过寄存器 的 UG 位产生软件的更新事件。从而产生更新中断溢出时间计算500ms 溢出时间主频为 72MHz。为了得到整数设置PSC值为 7199算出ARR为4999例程TIM_HandleTypeDef g_timx_handle; /* 定时器句柄 */ /** * brief 基本定时器TIMX定时中断初始化函数 * note * 基本定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候 * 基本定时器的时钟为APB1时钟的2倍, 而APB1为36M, 所以定时器时钟 72Mhz * 定时器溢出时间计算方法: Tout ((arr 1) * (psc 1)) / Ft us. * Ft定时器工作频率,单位:Mhz * * param arr: 自动重装值。 * param psc: 时钟预分频数 * retval 无 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) { g_timx_handle.Instance BTIM_TIMX_INT; /* 通用定时器X */ g_timx_handle.Init.Prescaler psc; /* 设置预分频系数 */ g_timx_handle.Init.CounterMode TIM_COUNTERMODE_UP; /* 递增计数模式 */ g_timx_handle.Init.Period arr; /* 自动装载值 */ HAL_TIM_Base_Init(g_timx_handle); HAL_TIM_Base_Start_IT(g_timx_handle); /* 使能定时器x及其更新中断 */ } /** * brief 定时器底层驱动开启时钟设置中断优先级 此函数会被HAL_TIM_Base_Init()函数调用 * param htim:定时器句柄 * retval 无 */ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) { if (htim-Instance BTIM_TIMX_INT) { BTIM_TIMX_INT_CLK_ENABLE(); /* 使能TIM时钟 */ HAL_NVIC_SetPriority(BTIM_TIMX_INT_IRQn, 1, 3); /* 中断号子优先级3组2 */ HAL_NVIC_EnableIRQ(BTIM_TIMX_INT_IRQn); /* 开启ITM3中断 */ } } /** * brief 定时器TIMX中断服务函数 * param 无 * retval 无 */ void BTIM_TIMX_INT_IRQHandler(void) { HAL_TIM_IRQHandler(g_timx_handle); /* 定时器中断公共处理函数 */ } /** * brief 定时器更新中断回调函数 * param htim:定时器句柄 * retval 无 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim-Instance BTIM_TIMX_INT) { LED1_TOGGLE(); /* LED1反转 */ } }#define LED0_TOGGLE() do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); }while(0) /* 翻转LED0 */ int main(void) { HAL_Init(); /* 初始化HAL库 */ sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */ delay_init(72); /* 延时初始化 */ usart_init(115200); /* 串口初始化波特率为115200 */ led_init(); /* 初始化LED */ btim_timx_int_init(5000 - 1, 7200 - 1); /* 10Khz的计数频率计数5K次为500ms */ while (1) { LED0_TOGGLE(); delay_ms(200); } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询