当前位置: 首页 > news >正文

stm32-TIM

自己写的delay函数用定时器 72Mhz#includestm32f10x.h#includedelay.h#includeled.h#includekey.h#includebuzzer.h#includelightSensor.h#includestdio.h#includeoled.h#includecounterSensor.h#includeencoder.hvoidapp_systemClock_init(void){// 开启 HSERCC_HSEConfig(RCC_HSE_ON);// 等待HSE开启完while(RCC_GetFlagStatus(RCC_FLAG_HSERDY)RESET);// 配置锁相环 phase locked loopRCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);// 开启锁相环RCC_PLLCmd(ENABLE);// 等待锁相环开启完while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)RESET);// 配置 AHB advanced high-speed bus APB1 advance peripheral bus1RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);// 切换时钟来源 切换来自于锁相环RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);// 等待时钟来源切换成功 0x00是 HSI 0x40是HSE 0x80是锁相环 phase locked loopwhile(RCC_GetSYSCLKSource()!0x80);// 开启指令预取,, instruction prefetch 72Mhz等待周期为2FLASH_PrefetchBufferCmd(ENABLE);FLASH_SetLatency(FLASH_Latency_2);}volatileuint32_tcurrentTick0;voidapp_delay(uint32_tms){uint32_texpireTimecurrentTickms;while(currentTickexpireTime);}voidapp_tim3_timebaseInit(void){// 开启tim3时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);TIM_TimeBaseInitTypeDef tim_timeBaseInitStructure;tim_timeBaseInitStructure.TIM_Prescaler71;tim_timeBaseInitStructure.TIM_Period999;tim_timeBaseInitStructure.TIM_CounterModeTIM_CounterMode_Up;tim_timeBaseInitStructure.TIM_RepetitionCounter0;TIM_TimeBaseInit(TIM3,tim_timeBaseInitStructure);// 闭合时基单元的开关TIM_Cmd(TIM3,ENABLE);// 开启定时器update中断 TIM允许发出中断请求但是cpu还不知道要不要处理这个请求TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);// nvic允许cpu响应这个中断没有nvic就不会跳转到中断函数// 配置nvic nested vectored intterupt controllerNVIC_InitTypeDef nvic_initStruct;nvic_initStruct.NVIC_IRQChannelTIM3_IRQn;// 抢占优先级nvic_initStruct.NVIC_IRQChannelPreemptionPriority0;nvic_initStruct.NVIC_IRQChannelSubPriority0;nvic_initStruct.NVIC_IRQChannelCmdENABLE;NVIC_Init(nvic_initStruct);}// 中断响应函数voidTIM3_IRQHandler(void){// 很多标志位都能触发中断if(TIM_GetFlagStatus(TIM3,TIM_FLAG_Update)SET){currentTick;// 清除标志位TIM_ClearFlag(TIM3,TIM_FLAG_Update);}}voidapp_onBoardLED_init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitTypeDef gpio_InitStruct;gpio_InitStruct.GPIO_PinGPIO_Pin_13;gpio_InitStruct.GPIO_ModeGPIO_Mode_Out_OD;gpio_InitStruct.GPIO_SpeedGPIO_Speed_2MHz;GPIO_Init(GPIOC,gpio_InitStruct);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);}intmain(void){// 设置中断组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);app_tim3_timebaseInit();app_onBoardLED_init();while(1){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);app_delay(500);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);app_delay(500);}}PWM pulse width modulation 脉冲宽度调制名词CNT counterPSC prescaler 预分频器ARR auto reload register 自动重装寄存器CCR capture compare register 捕获比较寄存器RCR repetition counter register 重复计数器PWM pulse width modulation 脉冲宽度调制输出比较模式选择 8中不同的模式ocxREf output compare x reference 输出比较通道x参考这8种模式通过cnt 和 CCR 参数来产生结果的相等有效 当 cnt的值和 CCR的值相等的时候是有效的是高电压toggle反转当cnt和CCR值相等的时候电平发生一次反转pwm1模式 当cnt CCR 这个 ocxREf 是高电压否则是低电压pwm2模式 当cnt CCR,输出低电压否则是高电压pwm pulse width modulationccr capture compare registerCH channel 正常输出CHxN n:negative 互补输出为什么要有互补输出 CHx 和 CHxN 是两个物理引脚你不可能为了用互补去换一个物理引脚加了个极性选择DAC digital to analog converter 把数字量变成模拟电压定时器主模式 master mode 这个TIM可以向外发送同步信号TRGO trigger output 触发输出普通情况下TIM自己玩自己的但是有时候我们希望TIM触发 ADC或者ADC或者触发别的TIM也就是外设之间的联动STM32搞了主从模式TIM可以对外发送同步信号比如每1ms采样一次ADC三相无刷电机 四轴飞行器电动车的后轮// 告诉编译器我有这个变量在别的文件定义了至于在哪里自己去找externuint16_tnum;
http://www.rkmt.cn/news/1396410.html

相关文章:

  • 2026年5月大庆地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • 小学期第十二周
  • MPNet-GRUs情感分析模型:融合Transformer与RNN的序列建模实践
  • 硬件友好型超分辨率:一维学习插值实现低成本图像增强
  • 记一次wpf 背景图的坑点
  • BGP选路原则--优选本地生成
  • 送开发板 | 瑞萨RA MCU开发者日 · 深圳——全“芯”启程,共探嵌入式未来!
  • 5月24号: 指数是下跌中继嘛?买点在哪几天?
  • 荣格:人到中年突然没了动力,不是病了,是该找回自己了
  • 2026年电竞椅品牌推荐:拓际TGIF口碑上乘 - 13425704091
  • 精细化装配管理,提升工业传动系统综合效益
  • 2026年电竞椅品牌性价比推荐:拓际TGIF划算耐用 - 19120507004
  • 用c++写控制台贪吃蛇游戏完整步骤
  • 量子特权信息学习框架:量子计算如何赋能经典机器学习模型
  • JMeter非GUI压测实战:从命令行参数到生产级基础设施
  • IPS中的结构漏光
  • hixl单边通信库:为什么比HCCL快3倍?
  • torchtitan-npu:7B大模型在8卡NPU上的分布式训练实录
  • 2026年5月最新重庆注销代办公司实力排行一览 - 奔跑123
  • Godot PCK文件解析原理与手写解包器实战指南
  • 代驾小程序APP代驾跑腿源码码兄代驾微信小程序代驾源码
  • 告别环境冲突!用VMware虚拟机为每个AI项目创建独立的Ubuntu+PyTorch沙盒
  • Python小程序二手房源界面抓取方案
  • 龙虾最新(V2026.5.20版)本地部署指南,全网第一个分享新手可学的教程
  • 机器学习赋能微服务拆分:从特征工程到图聚类的实战指南
  • 知识图谱嵌入与BLOCS分区算法解析
  • 传统穿搭追求潮流跟风,编写个人风格沉淀程序,筛选适配自身气质穿搭,拒绝盲目追潮流。
  • 影像技术实战25:批量视频抽帧跑太慢、磁盘爆满?FFmpeg 并发调度与断点续跑方案
  • 2026国产一体式电磁流量计TOP10品牌深度测评:谁在领跑国产替代新赛道? - 仪表品牌排行榜
  • Godot PCK文件解析原理与安全解包实战指南