首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

stm32 TIM定时器[操作寄存器+库函数](4)

stm32 TIM定时器[操作寄存器+库函数](4)

Library/src/tim.c
001#include <stm32f10x_lib.h>     

002#include "tim.h"

003

004//通用定时器初始化

005//参数说明:TIM_x 为选择定时器 TIM_1为通用寄存器1又一次类推(定义于tim.h), arr为自动重装值 ;psc 为时钟预分频数

006//待完善 目前只支持TIM2

007void Tim_Init(u8 TIM_x,u16 arr,u16 psc)

008{

009    switch(TIM_x)

010    {

011        case 1 :{

012

013            RCC->APB2ENR |=1<<11;

014

015            break;

016        }

017

018        case 2 :{

019            RCC->APB1ENR |=1<<0;

020

021            TIM2->ARR = arr;         //设定自动重装值

022            TIM2->PSC = psc;         //设定预分频值

023            TIM2->DIER |= 1<<0;            //允许更新中断

024            TIM2->DIER |= 1<<6;            //允许触发中断

025

026            TIM2->CR1 |= 0x81;           //使能定时器,自动重装允许                     

027

028            break;

029        }

030

031        case 3 :{

032            RCC->APB1ENR |=1<<1;

033

034            break;

035        }

036        case 4 :{

037            RCC->APB1ENR |=1<<2;               

038

039            break;

040        }

041

042        case 5 :{

043            RCC->APB1ENR |=1<<3;      

044

045            break;

046        }

047        case 6 :{

048

049            RCC->APB1ENR |=1<<4;

050

051            break;

052        }   

053        case 7 :{

054

055            RCC->APB1ENR |=1<<5;   

056

057            break;

058        }

059

060        case 8 :{

061

062            RCC->APB2ENR |=1<<13;

063

064            break;

065        }

066

067    }

068}

069

070//捕获比较值设定函数

071//参数说明:

072//          TIM_x 为选择定时器 TIM_1为通用寄存器1又一次类推(定义于tim.h)

073//          CCR_x 为选择捕获/比较寄存器(1~4)(定义于tim.h)

074//          val   为要设定的捕获/比较寄存器的值

075// 待完善,目前只支持TIM2

076

077void Tim_CCR_Set(u8 TIM_x,u8 CCR_x,u32 val)

078{

079    switch(TIM_x)

080    {

081        case 1 :{

082            break;

083        }

084

085        case 2 :{

086

087            TIM2->DIER |= 1 << CCR_x;          //开启相应允许捕获/比较中断

088

089            switch(CCR_x){

090

091                case 1: {

092                    TIM2 ->CCR1 = val;        //设置捕获/比较1的值

093                    break;

094                }

095

096                case 2: {

097                    TIM2 ->CCR2 = val;        //设置捕获/比较2的值

098                    break;

099                }

100

101                case 3: {

102                    TIM2 ->CCR3 = val;        //设置捕获/比较3的值

103                    break;

104                }

105

106                case 4: {

107                    TIM2 ->CCR4 = val;        //设置捕获/比较4的值

108                    break;

109                }

110            }

111                     

112            break;

113        }

114

115        case 3 :{

116            break;

117        }

118        case 4 :{

119            break;

120        }

121

122        case 5 :{

123            break;

124        }

125        case 6 :{

126            break;

127        }   

128        case 7 :{

129            break;

130        }

131

132        case 8 :{

133            break;

134        }

135

136    }

137

138}
继承事业,薪火相传
返回列表