STM32F7高级定时器TIM1/TIM8详解:解决SpringBoot应用资源访问问题

需积分: 46 149 下载量 20 浏览量 更新于2024-08-05 收藏 20.95MB PDF 举报
本文档主要介绍了STM32F7系列高级微控制器中的TIM1/TIM8定时器模块,它在SpringBoot打成jar运行后解决资源文件读取问题的重要角色。TIM1和TIM8是高级控制定时器,每个都具备16位自动重载计数器,能够通过预分频器灵活调整计数速度,广泛应用于测量输入脉冲、生成输出波形等任务。这些定时器具有独立性,可以与其他定时器同步,并支持多种工作模式,如输入捕获、输出比较、PWM等。 TIM1/TIM8的主要特性包括: 1. 16位计数器:可实现递增、递减或递增/递减计数,且计数器频率可通过编程预分频器动态调整。 2. 可编程预分频器:范围宽广,从1到65536,提供了丰富的灵活性。 3. 多通道:支持6个独立通道,通道5和通道6不支持输入捕获,适合不同的信号处理任务。 4. 可编程死区的互补输出:确保输出稳定性。 5. 同步功能:能与外部信号同步,支持多个定时器间的互联。 6. 中断/DMA请求:对各种事件(如计数溢出、初始化等)触发中断或DMA请求。 7. 支持定位编码器和霍尔传感器:扩展了其应用范围。 8. 触发输入:可用于外部时钟或逐周期电流管理。 文档详细阐述了STM32F75xxx和STM32F74xxx系列微控制器的内存和外设架构,例如多级总线系统(AHB、APB、CPUAXIM、ITCM、DTCM等),以及嵌入式Flash(包括闪存的读写操作、编程/擦除特性及控制寄存器解锁)。这对于在实际项目中正确配置和利用TIM1/TIM8定时器,以解决SpringBoot应用中资源文件访问问题至关重要。 总结来说,本资源深入介绍了STM32F7系列微控制器的高级定时器功能及其在嵌入式系统设计中的作用,是开发人员理解和利用这些功能解决问题的必备参考资料。

static inline void Car_forward(u8 speed) { TIM1->CCR1 = 20; // PA8 TIM1->CCR2 = 0; // PA9 TIM1->CCR3 = 20; // PA10 TIM1->CCR4 = 0; // PA11 TIM4->CCR1 = 20; // PB6 TIM4->CCR2 = 0; // PB7 TIM4->CCR3 = 20; // PB8 TIM4->CCR4 = 0; // PB9 } static inline void Car_Backward(u8 speed) { TIM1->CCR1 = 0; // PA8 TIM1->CCR2 = 20; // PA9 TIM1->CCR3 = 0; // PA10 TIM1->CCR4 = 20; // PA11 TIM4->CCR1 = 0; // PB6 TIM4->CCR2 = 20; // PB7 TIM4->CCR3 = 0; // PB8 TIM4->CCR4 = 20; // PB9 } static inline void Car_Turn_Left(u8 speed) { TIM1->CCR1 = 0; // PA8 TIM1->CCR2 = 20; // PA9 TIM1->CCR3 = 0; // PA10 TIM1->CCR4 = 20; // PA11 TIM4->CCR1 = 20; // PB6 TIM4->CCR2 = 0; // PB7 TIM4->CCR3 = 20; // PB8 TIM4->CCR4 = 0; // PB9 delay_ms(500); TIM1->CCR1 = 20; // PA8 TIM1->CCR2 = 0; // PA9 TIM1->CCR3 = 20; // PA10 TIM1->CCR4 = 0; // PA11 TIM4->CCR1 = 20; // PB6 TIM4->CCR2 = 0; // PB7 TIM4->CCR3 = 20; // PB8 TIM4->CCR4 = 0; // PB9 } static inline void Car_Turn_Right(u8 speed) { TIM1->CCR1 = 20; // PA8 TIM1->CCR2 = 0; // PA9 TIM1->CCR3 = 20; // PA10 TIM1->CCR4 = 0; // PA11 TIM4->CCR1 = 0; // PB6 TIM4->CCR2 = 20; // PB7 TIM4->CCR3 = 0; // PB8 TIM4->CCR4 = 20; // PB9 delay_ms(500); TIM1->CCR1 = 20; // PA8 TIM1->CCR2 = 0; // PA9 TIM1->CCR3 = 20; // PA10 TIM1->CCR4 = 0; // PA11 TIM4->CCR1 = 20; // PB6 TIM4->CCR2 = 0; // PB7 TIM4->CCR3 = 20; // PB8 TIM4->CCR4 = 0; // PB9 } static inline void Car_Stop(u8 speed) { TIM1->CCR1 = 0; // PA8 TIM1->CCR2 = 0; // PA9 TIM1->CCR3 = 0; // PA10 TIM1->CCR4 = 0; // PA11 TIM4->CCR1 = 0; // PB6 TIM4->CCR2 = 0; // PB7 TIM4->CCR3 = 0; // PB8 TIM4->CCR4 = 0; // PB9 }优化这段代码

161 浏览量

void TIM2_PWMShiftInit_3(TypeDef_Tim* Tim) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0}; Tim->Psc=3; Tim->TimeClock=200000000;// Tim->Frequence=2000;// Tim->Duty=0.5; Tim->DT=2000;// Tim->Arr=Tim->TimeClock/(Tim->Psc+1)/Tim->Frequence/2;// // Tim->CH1Ccr=Tim->Arr-(Tim->Arr*Tim->Duty)-Tim->DT/((Tim->Psc+1)*(1000000000.0f/Tim->TimeClock));// Tim->CH2Ccr=Tim->Arr-(Tim->Arr*Tim->Duty); Tim->Htim.Instance = TIM2; Tim->Htim.Init.Prescaler = Tim->Psc; Tim->Htim.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED3; Tim->Htim.Init.Period = Tim->Arr; Tim->Htim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; Tim->Htim.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; HAL_TIM_Base_Init(&Tim->Htim); HAL_TIM_Base_Start_IT(&Tim->Htim);// sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; HAL_TIM_ConfigClockSource(&Tim->Htim, &sClockSourceConfig); HAL_TIM_OC_Init(&Tim->Htim); sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; HAL_TIMEx_MasterConfigSynchronization(&Tim->Htim, &sMasterConfig); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = Tim->CH1Ccr; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;// sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_OC_ConfigChannel(&Tim->Htim, &sConfigOC, TIM_CHANNEL_3); __HAL_TIM_ENABLE_OCxPRELOAD(&Tim->Htim, TIM_CHANNEL_3); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = Tim->CH2Ccr; sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;// sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_OC_ConfigChannel(&Tim->Htim, &sConfigOC, TIM_CHANNEL_4); __HAL_TIM_ENABLE_OCxPRELOAD(&Tim->Htim, TIM_CHANNEL_4); __HAL_RCC_GPIOB_CLK_ENABLE(); /**TIM2 GPIO Configuration PB10 ------> TIM2_CH3 PB11 ------> TIM2_CH4 */ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_TIM_PWM_Start(&Tim->Htim, TIM_CHANNEL_3); HAL_TIM_PWM_Start(&Tim->Htim, TIM_CHANNEL_4); } TIM2_PWMShiftInit_3(&MyTim2);是什么意思

410 浏览量
200 浏览量