TIM的一些配置参数

2023-11-18

1、使能TIM时钟
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM*,ENABLE);
2、基础设置
   TIM_TimeBaseStructure.TIM_Period                                                 计数值   
   TIM_TimeBaseStructure.TIM_Prescaler                                              预分频,此值+1为分频的除数
   TIM_TimeBaseStructure.TIM_ClockDivision      =   0                               时钟因子 待做进一步说明
   TIM_TimeBaseStructure.TIM_RepetitionCounter =   0                               待做进一步说明
   TIM_TimeBaseStructure.TIM_CounterMode        =   TIM_CounterMode_Up              向上计数
                                                    TIM_CounterMode_Dowm            向下计数
                                                    TIM_CounterMode_CenterAligned1 中心对齐方式1
                                                    TIM_CounterMode_CenterAligned2 中心对齐方式2
                                                    TIM_CounterMode_CenterAligned3 中心对齐方式3
   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
   
3、通道设置
    ----------------------------------------------------------------------------------------------
    输出比较 & PWM通道
    TIM_OCInitStructure.TIM_OCMode =           TIM_OCMode_Timing                   输出比较时间模式    (输出引脚冻结无效)
     TIM_OCMode_Active                   输出比较主动模式    (匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输出为高电平)                                                
      TIM_OCMode_Inactive;            输出比较非主动模式 (匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平)      
      TIM_OCMode_Toggle                   输出比较触发模式    (翻转。当计数值与比较/捕获寄存器值相同时,翻转输出引脚的电平)
       TIM_OCMode_PWM1                     向上计数时,当TIMx_CNT < TIMx_CCR*时,输出电平有效,否则为无效
                                向下计数时,当TIMx_CNT > TIMx_CCR*时,输出电平无效,否则为有效
         TIM_OCMode_PWM2                     与PWM1模式相反
    TIM_OCInitStructure.TIM_OutputState     =   TIM_OutputState_Disable             禁止OC*输出
            TIM_OutputState_Enable              开启OC*输出到对应引脚
    TIM_OCInitStructure.TIM_OutputNState    =   TIM_OutputNState_Disable            互补输出使能。关闭OC*N输出
       TIM_OutputNState_Enable             互补输出使能。开启OC*N输出到对应的引脚                           
TIM_OCInitStructure.TIM_Pulse                                                   比较/PWM 通道的值
TIM_OCInitStructure.TIM_OCPolarity      =   TIM_OCPolarity_High;          极性为正
                                             TIM_OCPolarity_Low                  极必为负
TIM_OCInitStructure.TIM_OCNPolarity     =   TIM_OCNPolarity_High;          极性为正
                                             TIM_OCNPolarity_Low                 极必为负
TIM_OCInitStructure.TIM_OCIdleState     =   TIM_OCIdleState_Set                 当MOE=0时,如果实现了OC*N,则死区后OC*=1
            TIM_OCIdleState_Reset               当MOE=0时,如果实现了OC*N,则死区后OC*=0
TIM_OCInitStructure.TIM_OCNIdleState    =   TIM_OCIdleNState_Set                当MOE=0时,死区后OC*N=1
     TIM_OCIdleNState_Reset              当MOE=0时,死区后OC*N=0
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);                    禁止OC1重装载,即TIM*_CCR*的数一经写入立即生效,否则要在下一个更新事件到来后才被装入寄存器

TIM_CtrlPWMOutputs(TIM1,ENABLE);                                                如果使用PWM模式,则此句一定不能省
    ---------------------------------------------------------------------------------------------- 
    输入捕获通道
    TIM_ICInitStructure.TIM_Channel         =   TIM_Channel_1
                                                TIM_Channel_2
                                                TIM_Channel_3
                                                TIM_Channel_4
    TIM_ICInitStructure.TIM_ICPolarity      =   TIM_ICPolarity_Rising               输入/捕获上升沿有效
                                                TIM_ICPolarity_Falling              输入/捕获下降沿有效
    TIM_ICInitStructure.TIM_ICSelection     =   TIM_ICSelection_DirectTI            IC*输入引脚选择,针对IC1/IC2有不同的定义
                                                TIM_ICSelection_IndirectTI
                                                TIM_ICSelection_TRC
    TIM_ICInitStructure.TIM_ICPrescaler     =   TIM_ICPSC_DIV1                      输入模式下,捕获端口上的每一次边沿都触发一次捕获
                                                TIM_ICPSC_DIV2                      输入模式下,每2次事件触发一次捕获
                                                TIM_ICPSC_DIV4                      输入模式下,每4次事件触发一次捕获
                                                TIM_ICPSC_DIV8                      输入模式下,每8次事件触发一次捕获
    TIM_ICInitStructure.TIM_ICFilter        =                                       捕获采样频率,详见TIM*_CCMR->IC*F说明
    ----------------------------------------------------------------------------------------------    
    死区设置
    TIM_BDTRInitStructure.TIM_OSSRState     =   TIM_OSSRState_Enable
                                                TIM_OSSRState_Disable
    TIM_BDTRInitStructure.TIM_OSSRIState    =   TIM_OSSRIState_Enable
                                                TIM_OSSRIState_Disable
    TIM_BDTRInitStructure.TIM_LOCKLevel     =   TIM_LOCKLevel_OFF
                                                TIM_LOCKLevel_1
                                                TIM_LOCKLevel_2
                                                TIM_LOCKLevel_3
    TIM_BDTRInitStructure.TIM_DeadTime      =   这里调整死区大小0-0xff
    TIM_BDTRInitStructure.TIM_Break         =   TIM_Break_Enable
                                                TIM_Break_Disable
    TIM_BDTRInitStructure.TIM_BreakPolarity =   TIM_BreakPolarity_Low
                                                TIM_BreakPolarity_High
    TIM_BDTRInitStructure.TIM_AutomaticOutput= TIM_AutomaticOutput_Enable
                                                TIM_AutomaticOutPut_Disable

4、配置中断
5、开启TIM
---------------------------------------------------------------------------------------------------- 
例:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
u16 CCR1_Val = 60000;
u16 CCR2_Val = 40000;
u16 CCR3_Val = 20000;
u16 CCR4_Val = 10000; 

/* TIM2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

/* 基础设置*/
TIM_TimeBaseStructure.TIM_Period = 65535;    //计数值   
TIM_TimeBaseStructure.TIM_Prescaler = 7200-1;    //预分频,此值+1为分频的除数
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

/* 比较通道1*/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Inactive;         //输出比较非主动模式
TIM_OCInitStructure.TIM_Pulse = CCR1_Val; 
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;   //极性为正
   
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);     //禁止OC1重装载,其实可以省掉这句,因为默认是4路都不重装的.

/*比较通道2 */        
TIM_OCInitStructure.TIM_Pulse = CCR2_Val; 

TIM_OC2Init(TIM2, &TIM_OCInitStructure); 
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable);

/* 比较通道3 */         
TIM_OCInitStructure.TIM_Pulse = CCR3_Val; 

TIM_OC3Init(TIM2, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable);

/* 比较通道4 */       
TIM_OCInitStructure.TIM_Pulse = CCR4_Val; 

TIM_OC4Init(TIM2, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Disable);

/*使能预装载*/
TIM_ARRPreloadConfig(TIM2, ENABLE);
/*预先清除所有中断位*/
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4|TIM_IT_Update);

/* 4个通道和溢出都配置中断*/
TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4|TIM_IT_Update, ENABLE);


/* 允许TIM2开始计数 */
TIM_Cmd(TIM2, ENABLE);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TIM的一些配置参数 的相关文章

随机推荐

  • linux环境开发

    在服务器中 通过代码读取数据集data 并将数据集data加载到cpu的内存中 再通过data cuda 命令将数据集从cpu 传到gpu运行 gpu上开始训练 模型训练的结果 如权重参数等 也是存放在gpu中 再通过 cpu 命令将模型输
  • Raspberry Pi 上 ROS 服务器/客户端通过GPIO 驱动硬件

    ROS 服务 现在 想象一下你在你的电脑后面 你想从这个服务中获取天气 你 在你身边 被认为是客户端 在线天气服务是服务器 您将能够通过带有 URL 的 HTTP 请求访问服务器 将 HTTP URL 视为 ROS 服务 首先 您的计算机将
  • 2023年江苏省赛事网络空间安全理论题库

    单选题 1 访问控制是指确定 以及实施访问权限的过程 A 用户权限 B 可给予哪些主体访问权利 C 可被用户访问的资源 D 系统是否遭受入侵 答案 A 2 数据安全从总体上可以分成5个层次 是信息安全中研究的关键点 A 密码技术 B 安全协
  • MySQL慢查询

    看到这个名称我惊呆了 SQL不是希望快速查询取得结果吗 怎么什么时候会有这个概念 问了一个哥们 哥们认为是漫查询 同时多查询 于是Google得出了如下结果 慢查询其实对应的是MySQL慢查询日志系统 用来记录执行比较慢的SQL 怎么去判断
  • python从入门到时间_史上最详细python学习路线-从入门到精通,只需5个月时间

    针对Python的初学者 从无到有的Python语言如何入门 主要包括了 Python的简介 如何下载Python 如何安装Python 如何使用终端 Shell IDE等各种开发环境进行Python开发 Python中的语法和基本知识 概
  • 在一台电脑上出现提交文件名是中文的时候就报错HTTP Status 400 – Bad RequestRequired MultipartFile parameter 'excelFile&#

    在一台电脑上出现提交文件名是中文的时候就报错HTTP Status 400 Bad RequestRequired MultipartFile parameter excelFile
  • 如何在普通PC上安装macOS苹果操作系统

    目录 官网 如何下载和安装 macOS 如何在普通PC上安装macOS苹果操作系统 Mac PC 有什么不同 说明 1 下载 可以直接从 网页上 采用通常的方式进行下载 不需要使用 使用 App Store 但使用使用 App Store下
  • python安装模块方法_Python模块安装方法

    一 方法1 单文件模块 直接把文件拷贝到 python dir Lib 二 方法2 多文件模块 带setup py 下载模块包 进行解压 进入模块文件夹 执行 python setup py install 三 方法3 easy insta
  • python根据TF-IDF使用sklearn(TfidfVectorizer)计算句子的embedding

    TF IDF的计算公式如下 代码案例 from sklearn feature extraction text import TfidfVectorizer import jieba sentences list list 优惠的政策和政府
  • POI操作excel基本使用

    不用多说 下面的一个类中就是一些POI操作Excel xls 的常见操作 但是真正要生成一些如报表等复杂格式Excel的时候 通常的做法都是事先把格式一切的东西都手动制作好 数据模板 然后在Java应用中适当的时机把这个文件读进来 添加相应
  • 【蓝桥杯试题】试题 算法训练 印章

    试题 算法训练 印章 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案 保
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • qt 多边形填充 生成语义分割的mask 灰度图

    qt多边形的绘制 填充与显示 直接在QWidget界面显示 重写paintEvent即可 QtTest QtTest QWidget parent QMainWindow parent ui setupUi this void QtTest
  • linux c 语言小结

    linux c 语言小结 gdb 使用 gdb是调试linux c语言代码的 所以要调试linux c语言 先要 gcc g 文件名 才能开始调试 gdb 命令 首先在命令行中输入 gdb 调试的基本代码 list 展示 s 进入函数内部
  • 如何理解原码,反码,补码转换

    首先 无论原码还是反码还是补码都是二进制形式 有效位数是7位 最后 最左边 一位是符号位 用以区别正负 数据在内存中是以 补码 的形式存放 一 区别 原码 最高位 0 是正数 最高位 1 是负数 反码 正数 与原码一致 负数 最高位不变 其
  • 为什么我的AJAX请求处理成功了,还报404错误

    为什么我的AJAX请求处理成功了 还报404错误 忘了添加 ResponseBody注解 参考博客 https blog csdn net jiaotuwoaini article details 53445182
  • 标注数字对应的文本_循环嵌套_全局暂元

    标注数字对应的文本 循环嵌套 全局暂元 1 清洗数据 cd path EPS data use temp ybmy nodest dta clear gen hy3 real substr string hy4 1 3 gen hy2 re
  • 安全客&FREEBUF 文章阅读量似乎有点问题

    安全客 FREEBUF 文章阅读量似乎有点问题 随手写个脚本测试一下 其中freebuf那篇文章是很老的文章了 居然阅读量还是嗖嗖的涨 下次是不是可以写个折线图分析一下 看看每次加的是不是有规律的 scripts cat freebufcu
  • OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000b4680000, 297795584, 0)

    在测试环境中 出现如下报错 经排查发现是物理机内存不足 此时对应服务进程已不在 OpenJDK 64 Bit Server VM warning INFO os commit memory 0x00000000b4680000 297795
  • TIM的一些配置参数

    1 使能TIM时钟 RCC APB1PeriphClockCmd RCC APB1Periph TIM ENABLE 2 基础设置 TIM TimeBaseStructure TIM Period 计数值 TIM TimeBaseStruc