STM32F10x - TIM - 图文 下载本文

tmpccer |= (TIM_IC1Polarity | (u16)(TIM_IC2Polarity << 4)); //设置通道输入捕获方式:反相?不反相? //TIM_IC2Polarity采用的IC1P的定义值,IC2P在IC1P的高4位处

/* Write to TIMx SMCR,CCMR1 ,CCER */ TIMx->SMCR = tmpsmcr;

TIMx->CCMR1 = tmpccmr1; // CCMR1/2.CCxS仅在通道关闭时(CCER.CCxE=0)才是可写的! TIMx->CCER = tmpccer; }

19.2.41 函数TIM_GenerateEvent

Table 527. 函数TIM_GenerateEvent 函数名 TIM_GenerateEvent 函数原形 void TIM_GenerateEvent(TIM_TypeDef* TIMx, u16 TIM_EventSource) 功能描述 设置TIMx事件由软件产生 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_EventSource:TIM软件事件源 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_EventSource :选择 TIM软件事件源。 Table 528. TIM_EventSource值 TIM_EventSource 描述/EGR #define值 EGR位置 TIM_EventSource_Update TIM更新事件源 0x0001 bit0 TIM_EventSource_CC1 TIM捕获比较1事件源 0x0002 bit1 TIM_EventSource_CC2 TIM捕获比较2事件源 0x0004 bit2 TIM_EventSource_CC3 TIM捕获比较3事件源 0x0008 bit3 TIM_EventSource_CC4 TIM捕获比较4事件源 0x0010 bit4 TIM_EventSource_COM TIM COM事件源 0x0020 bit5 TIM_EventSource_Trigger TIM触发事件源 0x0040 bit6 TIM_EventSource_Break TIM刹车事件源 0x0080 bit7 例:

/* Selects the Trigger software Event generation for TIM2 */ TIM_GenerateEvent(TIM2, TIM_EventSource_Trigger); 函数原型如下:

void TIM_GenerateEvent(TIM_TypeDef* TIMx, u16 TIM_EventSource) {

/* Check the parameters */

assert_param(IS_TIM_ALL_PERIPH(TIMx));

assert_param(IS_TIM_EVENT_SOURCE(TIM_EventSource));

assert_param(IS_TIM_PERIPH_EVENT((TIMx), (TIM_EventSource)));

/* Set the event sources */ TIMx->EGR = TIM_EventSource; }

19.2.42 函数TIM_OC1PolarityConfig

Table 529. 函数TIM_OC1PolarityConfig 函数名 TIM_OC1PolarityConfig 函数原形 void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) 功能描述 设置TIMx通道1极性 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCPolarity:输出比较极性 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCPolarity:输出比较极性。 参数TIM_OCPolarity的值 描述/CCER.CC1P[bit1] TIM_OCPolarity_High CCx通道输出高电平有效 TIM_OCPolarity_Low CCx通道输出低电平有效 例: #define ((u16)0x0000) ((u16)0x0002) /* Selects the Polarity high for TIM2 channel 1 output compare */ TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High); 函数原型如下:

void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) {

u16 tmpccer = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));

tmpccer = TIMx->CCER;

/* Set or Reset the CC1P Bit *///bit1 tmpccer &= CCER_CC1P_Reset; tmpccer |= TIM_OCPolarity;

/* Write to TIMx CCER register */ TIMx->CCER = tmpccer; }

19.2.43 函数TIM_OC2PolarityConfig

Table 530. 函数 TIM_OC2PolarityConfig 函数名 TIM_OC2PolarityConfig 函数原形 void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) 功能描述 设置TIMx通道2极性 输入参数1 TIMx:x可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCPolarity:输出比较极性 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCPolarity:输出比较极性。【采用TIM_OC1PolarityConfig的值】 参数TIM_OCPolarity的值 描述/CCER.CC1P[bit1] #define TIM_OCPolarity_High CCx通道输出高电平有效 ((u16)0x0000) TIM_OCPolarity_Low CCx通道输出低电平有效 ((u16)0x0002) 例:

/* Selects the Polarity high for TIM2 channel 2 output compare */ TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High); 函数原型如下:

void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) {

u16 tmpccer = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));

tmpccer = TIMx->CCER;

/* Set or Reset the CC2P Bit */ tmpccer &= CCER_CC2P_Reset;

tmpccer |= (u16)(TIM_OCPolarity << 4);//采用OC1P的值,OC2P高OC1P 4位

/* Write to TIMx CCER register */ TIMx->CCER = tmpccer; }

19.2.44 函数TIM_OC3PolarityConfig

Table 531. 函数 TIM_OC1PolarityConfig

函数名 TIM_OC3PolarityConfig 函数原形 void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) 功能描述 设置TIMx通道3极性 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCPolarity:输出比较极性 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCPolarity:输出比较极性。【采用TIM_OC1PolarityConfig的值】 参数TIM_OCPolarity的值 描述/CCER.CC1P[bit1] #define TIM_OCPolarity_High CCx通道输出高电平有效 ((u16)0x0000) TIM_OCPolarity_Low CCx通道输出低电平有效 ((u16)0x0002) 例:

/* Selects the Polarity high for TIM2 channel 3 output compare */ TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High); 函数原型如下:

void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) {

u16 tmpccer = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));

tmpccer = TIMx->CCER;

/* Set or Reset the CC3P Bit */ tmpccer &= CCER_CC3P_Reset;

tmpccer |= (u16)(TIM_OCPolarity << 8); //采用OC1P的值,OC2P高OC1P 8位

/* Write to TIMx CCER register */ TIMx->CCER = tmpccer; }

19.2.45 函数TIM_OC4PolarityConfig

Table 532. 函数TIM_OC4PolarityConfig 函数名 TIM_OC4PolarityConfig void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, u16 函数原形 TIM_OCPolarity) 功能描述 设置TIMx通道4极性 输入参数1 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 输入参数2 TIM_OCPolarity:输出比较极性 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_OCPolarity:输出比较极性。【采用TIM_OC1PolarityConfig的值】 参数TIM_OCPolarity的值 描述/CCER.CC1P[bit1] #define TIM_OCPolarity_High CCx通道输出高电平有效 ((u16)0x0000) TIM_OCPolarity_Low CCx通道输出低电平有效 ((u16)0x0002) 例:

/* Selects the Polarity high for TIM2 channel 4 output compare */ TIM_OC1PolarityConfig(TIM2, TIM_OCPolarity_High); 函数原型如下:

void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity) {

u16 tmpccer = 0;

/* Check the parameters */

assert_param(IS_TIM_123458_PERIPH(TIMx));

assert_param(IS_TIM_OC_POLARITY(TIM_OCPolarity));

tmpccer = TIMx->CCER;

/* Set or Reset the CC4P Bit */ tmpccer &= CCER_CC4P_Reset;

tmpccer |= (u16)(TIM_OCPolarity << 12); //采用OC1P的值,OC2P高OC1P 12位

/* Write to TIMx CCER register */ TIMx->CCER = tmpccer; }

19.2.46 函数TIM_UpdateRequestConfig

Table 533. 函数 TIM_UpdateRequestConfig 函数名 TIM_UpdateRequestConfig 函数原形 void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, u16 TIM_UpdateSource) 功能描述 设置TIMx更新请求源 输入参数1 TIMx:x 可以是1,2,3,4,5,6,7,8来选择TIM外设 输入参数2 TIM_UpdateSource:TIM更新请求源 输出参数 无 返回值 无 先决条件 无 被调用函数 无 TIM_UpdateSource:选择TIM更新源。 Table 534. TIM_UpdateSource值 参数TIM_UpdateSource的值 描述/CR1.0PM/[bit3] #define值 TIM_UpdateSource_Global 生成重复的脉冲:在更新事件时计数器不停止 0x0008 TIM_UpdateSource_Regular 生成单一的脉冲:计数器在一个更新事件停止 0x0000 例:

/* Selects the regular update source for TIM2 */

TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular); 函数原型如下:

void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, u16 TIM_UpdateSource) {

/* Check the parameters */

assert_param(IS_TIM_ALL_PERIPH(TIMx));

assert_param(IS_TIM_UPDATE_SOURCE(TIM_UpdateSource));

if (TIM_UpdateSource != TIM_UpdateSource_Global)//根据一次脉冲?重复脉冲?的情况下设置URS {

/* Set the URS Bit */

TIMx->CR1 |= CR1_URS_Set;//导致中断或DMA请求的UEV: 计数器溢出/下溢 } else {

/* Reset the URS Bit */

TIMx->CR1 &= CR1_URS_Reset;

//导致中断或DMA请求的UEV:【1】.计数器溢出/下溢;【2】.设置EGR.UG位;【3】.从模式控制器产生的更新 } }

19.2.47 函数TIM_SelectHallSensor Table 535. 函数TIM_SelectHallSensor 函数名 函数原形 功能描述 输入参数 1 输入参数 2 输出参数 返回值 先决条件 TIM_SelectHallSensor void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState Newstate) 使能或失能TIMx霍尔传感器接口 TIMx:x 可以是1,2,3,4,5,8来选择TIM外设 NewState:TIMx霍尔传感器接口的新状态(ENABLE 或 DISABLE) 无 无 无