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£© ÎÞ ÎÞ ÎÞ