»ùÓÚstm32µÄÖÇÄÜС³µÉè¼Æ
ͼ2.18 ³¬Éù²¨Ê±Ðòͼ
ÎÒÃǸù¾ÝʱÐòͼ£¬¿ÉÒÔ±àдÏàÓ¦µÄ³ÌÐò´úÂ롣ΪÁË·ÀÖ¹·¢ÉäÐźŶԻØÏòÐźŵÄÓ°Ï죬ÎÒÃǵIJâÁ¿ÖÜÆÚ²»Ò×¹ýС¡£²¢ÇÒÓÉÓÚHC-SR04µÄ¸ÐÓ¦½Ç¶È²»´óÓÚ15¡ã£¬ËùÒÔ²â¾àʱ£¬ÎªÁË·ÀÖ¹·¢ÉäÐźŶªÊ§£¬ÎÒÃÇÒªÇó±»²âÎïÌåµÄÃæ»ý²»Ó¦Ð¡ÓÚ0.5ƽ·½Ã×£¬·ñÔò¿ÉÄܵ¼Ö²âÁ¿½á¹û²»×¼È·¡£
¶æ»úÔÚ±ÜÕÏÄ£¿éµÄÖ÷Òª×÷ÓÃÇ°ÃæÒѾÌáµ½£¬±¾½ÚÖ÷Òª½²½â¶æ»úµÄ¹¤×÷ÌØÐÔ¡£¶æ»úµÄʵÎïͼÈçͼ2.19Ëùʾ£º
ͼ2.19 ¶æ»úʵÎïͼ
¶æ»úµÄ¹¤×÷¹¤×÷ÔÀíÊÇstm32΢´¦ÀíÆ÷·¢³öÊý¾Ý¸ø¶æ»ú£¬¶æ»úÄÚ²¿ÓÐÒ»¸ö»ù×¼µç·£¬Ëü»á²úÉúÖÜÆÚΪ20ms£¬¿í¶ÈΪ1.5msµÄ»ù×¼Ðźţ¬Ëü½«Î¢´¦ÀíÆ÷´«ÊäµÄÖ±Á÷Æ«ÖõçѹÓëµçλÆ÷µÄµçѹÊý¾Ý½øÐбȽϣ¬»ñµÃµçѹ²îÊä³ö¡£¾Óɵç·°åÉϵÄIC ÅжÏת¶¯·½Ïò£¬ÔÙÇý¶¯ÎÞºËÐÄÂí´ï¿ªÊ¼×ª¶¯£¬Í¸¹ý¼õËÙ³ÝÂÖ½«¶¯Á¦´«ÖÁ°Ú±Û£¬Í¬Ê±ÓÉλÖüì²âÆ÷Ëͻط´À¡Ðźš£¶æ»úµÄת¶¯½Ç¶ÈÓëstm32ËùÌṩµÄPWMÐźÅÏà¹Ø¡£±ê×¼ÐźÅPWMÖÜÆÚΪ20ms£¬ÀíÂÛÉÏÀ´½²Âö¿íΪ1~2ms£¬Êµ¼ÊÎÒÃǵÄÂö¿íΪ0.5~2.5ms£¬Âö¿íÓëËùתµÄ½Ç¶ÈÒ»Ò»¶ÔÓ¦¡£½Ç¶ÈÓëÂö¿íµÄ¶ÔӦͼÈçͼ2.20Ëùʾ£º
- 20 -
»ùÓÚstm32µÄÖÇÄÜС³µÉè¼Æ
ͼ2.20 ¶æ»ú½Ç¶ÈÓëÂö¿í¶ÔӦͼ
2.3.2 HC-SR04Ä£¿éÓ²¼þµç·Éè¼Æ ³¬Éù²¨Ä£¿éÓ²¼þÔÀíͼÈçÏÂͼËùʾ£º
ͼ2.21 ³¬Éù²¨Ó²¼þÔÀíͼ
HC-SR04Ä£¿éÖ÷ÒªÓÉ·¢ÉäÆ÷¡¢½ÓÊÕÆ÷ºÍ²¿·Öµç·×é³É¡£ÔÚ´ËÊÔÑéÖУ¬ÎÒÃÇÖ»Ðè¼òµ¥Á˽âµç·µÄÉè¼Æ£¬¶ÔÓÚÆä»ù±¾ÔÀí¿ÉÒÔ²»Óùý¶àÉæÁÔ£¬ÎÒÃÇÖ»ÐèÃ÷°×ËüÃǵŤ×÷ÔÀí£¬²¢ÇÒÄܹ»¼òµ¥ÔËÓü´¿É¡£ 2.3.3 HC-SR04Ä£¿é³ÌÐòÉè¼Æ
¸ù¾ÝÓ²¼þµç·µÄÉè¼Æ£¬ÎÒÃǶԱÜÕÏ×Ó³ÌÐò½øÐÐÉè¼Æ£¬³ÌÐòÁ÷³ÌͼÈçͼ2.22Ëùʾ£º
- 21 -
»ùÓÚstm32µÄÖÇÄÜС³µÉè¼Æ
¿ªÊ¼ÏµÍ³³õʼ»¯Ç°½ø·ñǰ·½ÊÇ·ñÓÐÕϰÊǶæ»ú×óת·ñС³µ×óתС³µ×ó·½ÊÇ·ñÓÐÕϰÊǶæ»úÓÒת·ñС³µÓÒ·½ÊÇ·ñÓÐÕϰС³µÓÒתС³µºóת±ÜÕÏ×Ó³ÌÐò½áÊø ͼ2.22 ±ÜÕϳÌÐòÁ÷³Ìͼ
±ÜÕÏÄ£¿éÔÚ³ÌÐòÉè¼ÆÖУ¬ÎÒÃǵŤ×÷Ö÷ÒªÊÇ£º 1¡¢¿ØÖƳ¬Éù²¨µÄɨÃèÖÜÆÚ
2¡¢²É¼¯³¬Éù²¨·¢Éäµ½½ÓÊÜµÄ¸ßµçÆ½³ÖÐøÊ±¼ät
3¡¢¶Ô²É¼¯µÄ¸ßµçƽ³ÖÐøÊ±¼ät½øÐд¦Àí£¬ÅжÏǰ·½ÊÇ·ñÓÐÕϰ ÏÂÃæÎÒÃǾÍÏêϸ½éÉÜÎÒÃÇÊÇÔõôͨ¹ýÈí¼þÉè¼ÆÀ´Íê³ÉÕ⼸¸ö²½ÖèµÄ£º 1¡¢¿ØÖƳ¬Éù²¨µÄɨÃèÖÜÆÚ
¸ù¾Ý±í2-2£¬ÎÒÃDzÉÓõÄÊÇTIM2À´¿ØÖƳ¬Éù²¨µÄɨÃèÖÜÆÚ¡£Ê×ÏÈÎÒÃǰÑTIM2ÉèÖÃΪ¶¨Ê±Æ÷ÖжÏģʽ£¬´úÂë¸ñʽΪvoid TIM2_Int_Init(u16 arr,u16 psc); ÓÉÓÚÅäÖö¨Ê±Æ÷ÖжÏģʽʮ·Ö¼òµ¥£¬ÎÒÃǾͲ»ÔÚÏêϸ½éÉÜ£¬ÆäÏêϸ´úÂë¼û¸½Â¼4.¶¨Ê±Æ÷TIM2µÄÖжÏÖÜÆÚ¼ÆË㹫ʽΪT=((arr+1)*(psc+1))/Tclk¡£TclkΪϵͳÖÜÆÚ£¬Ò»°ãΪ72Mhz.ÎÒÃÇÔÚÖжϷþÎñ³ÌÐòÖпØÖƳ¬Éù²¨µÄ·¢É䣬ÎÒÃDzÉÓÃPC7×÷Ϊ´¥·¢Ðźţ¬¸ù¾Ý³¬Éù²¨Ê±Ðòͼ£¬ÎÒÃÇÐèÒªÔÚÖжϳÌÐòÖиøPC7Ò»¸ö³ÖÐø10msµÄ¸ßµçƽ£¬ÖжϷþÎñ³ÌÐòÈçÏ£º
- 22 -
»ùÓÚstm32µÄÖÇÄÜС³µÉè¼Æ
void TIM2_IRQHandler(void) //TIM2ÖÐ¶Ï {
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); GPIO_SetBits(GPIOC,GPIO_Pin_7); delay_ms(10);
GPIO_ResetBits(GPIOC,GPIO_Pin_7);
} }
2¡¢²É¼¯³¬Éù²¨·¢Éäµ½½ÓÊܵijÖÐøÊ±¼ät
ÔÚ±¾½ÚÊÔÑéÖУ¬ÎÒÃÇʹÓÃÁËͨÓö¨Ê±Æ÷TIM5µÄÊäÈë²¶»ñ¹¦ÄÜ£¬ÊäÈë²¶»ñģʽ¾ßÓвâÁ¿ÆµÂÊ»òÕß²âÁ¿Âö³åµÄ¿í¶ÈµÄ¹¦ÄÜ¡£ÎÒÃÇ¿ªÆôTIM5ͨµÀCH1£¨¶¨Ê±Æ÷5£©µÄÊäÈë²¶»ñģʽ£¬²É¼¯ECHO¶Ë¿ÚµÄ¸ßµçƽ³ÖÐøÊ±¼ä¡£ÅäÖö¨Ê±Æ÷5´úÂë¸ñʽΪ£º void TIM5_Cap_Init(u16 arr,u16 psc){?}
ÏÂÃæÎÒÃǾÍÏêϸ½²½âһϣ¬ÈçºÎ¿ªÆô²¢Ê¹ÓÃͨÓö¨Ê±Æ÷µÄÊäÈë²¶»ñ¹¦ÄÜ¡£ ÊäÈë²¶»ñµÄÔÀí£¬¼òµ¥µÄ½²¾ÍÊÇͨ¹ý¼ì²âTIM5£¨¶¨Ê±Æ÷£©Í¨µÀCH1µÄ±ßÑØÐźţ¬µ±±ßÑØÐźŷ¢Éú±ä»¯Ê±£¬µ±Ç°¼Ä´æÆ÷µÄÖµTIM1_CNT´æ·Åµ½Í¨µÀµÄ²¶»ñ/±È½Ï¼Ä´æÆ÷£¨TIM5_CCR1£©ÀïÃæ¡£ÎÒÃǵÄʵÑé¾ÍÊDzɼ¯²¶»ñ/±È½Ï¼Ä´æÆ÷£¨TIM5_CCR1£©ÖеÄÖµ²¢½øÐд¦Àí£¬Íê³ÉÏàÓ¦µÄ¶¯×÷¡£ÎªÁËʹTIM5ͨµÀCH1¾ßÓв¶»ñ¹¦ÄÜ£¬ÎÒÃÇÐèÒªÓõ½TIM5_PSC¡¢TIM5_ARR¡¢²¶»ñ/±È½Ïģʽ¼Ä´æÆ÷£¨TIM5_CCMR1£©¡¢²¶»ñ/±È½ÏʹÄܼĴæÆ÷(TIM5_CCER)¡¢²¶»ñ/±È½Ï¼Ä´æÆ÷£¨TIM5_CCR1£©¡¢DMA/ÖжÏʹÄܼĴæÆ÷£¨TIM5_DIER£©¡¢¿ØÖƼĴæÆ÷(TIM5_CR1)¡£ÎÒÃÇÏÂÃæ¾Í¼òµ¥½éÉÜÏÂÏÂÕ⼸¸ö¼Ä´æÆ÷¡£
TIM5_PSC¡¢TIM5_ARR¡¢TIM5_CCR1Õâ3¸ö¼Ä´æÆ÷Ó÷¨Óëǰ½ÚÖÐÏàͬ£¬ÎÒÃǾͲ»ÔÚ׸Êö£¬¶øÔÚ±¾ÊµÑéÖУ¬²¶»ñ/±È½Ï¼Ä´æÆ÷TIM5_CCMR1·Ç³£ÖØÒª£¬¸Ã¼Ä´æÆ÷µÄ¸÷λÃèÊöÈçÏÂͼËùʾ£º
- 23 -
»ùÓÚstm32µÄÖÇÄÜС³µÉè¼Æ
ͼ2.23 TIMx_CCMR1¸÷λÃèÊö
ÎÒÃÇʹÓõÄÊÇTIM5²¶»ñ/±È½ÏͨµÀCH1£¬ËùÒÔͼÖÐÖ»½éÉÜ[7:0]λ¡£±¾´ÎÊÔÑéÎÒÃÇÉèÖÃCC1S[1:0]=01£¬IC1PSC[1£º0]=00£¬IC1F[3£º0]=0000¡£
½Ó×ÅÎÒÃÇÔÙÀ´¿´¿´²¶»ñ/±È½ÏʹÄܼĴæÆ÷TIMx_CCER,±¾½ÚÓõ½ÁËCC1EºÍCC1PÁ½Î»£¬ÃèÊöÈçÏÂͼËùʾ£º
ͼ2.24 TIMx_CCER×îµÍÁ½Î»ÃèÊö
- 24 -