新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2019-7-27
- 在线时间
- 15 小时
|
10金钱
#include "timer.h"
#include "led.h"
//////////////////////////////////////////////////////////////////////////////////
//±¾3ìDòÖ»1©Ñ§Ï°ê1óã¬Î′¾-×÷ÕßDí¿é£¬2»μÃóÃóúÆäËüèÎoÎóÃí¾
//ALIENTEK STM32F429¿a·¢°å
//¶¨ê±Æ÷ÖD¶ÏÇy¶ˉ′úÂë
//ÕyμãÔ-×ó@ALIENTEK
//¼¼êõÂÛì3:www.openedv.com
//′′½¨èÕÆú:2016/1/6
//°æ±¾£oV1.0
//°æè¨ËùóD£¬μá°æ±Ø¾¿¡£
//Copyright(C) 1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾ 2014-2024
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
TIM_HandleTypeDef TIM3_Handler; //¶¨ê±Æ÷¾ä±ú
//í¨óö¨ê±Æ÷3ÖD¶Ï3õê¼»ˉ
//arr£o×Ô¶ˉ֨װÖμ¡£
//psc£oê±ÖóÔ¤·ÖÆμêy
//¶¨ê±Æ÷òç3öê±¼ä¼ÆËã·½·¨:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=¶¨ê±Æ÷1¤×÷ÆμÂê,μ¥λ:Mhz
//Õaàïê1óÃμÄêǶ¨ê±Æ÷3!(¶¨ê±Æ÷31òÔúAPB1éÏ£¬ê±ÖóÎaHCLK/2)
void TIM3_Init(u16 arr,u16 psc)
{
TIM3_Handler.Instance=TIM3; //í¨óö¨ê±Æ÷3
TIM3_Handler.Init.Prescaler=psc; //·ÖÆμÏμêy
TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //ÏòéϼÆêyÆ÷
TIM3_Handler.Init.Period=arr; //×Ô¶ˉ×°ÔØÖμ
TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//ê±Öó·ÖÆμòò×ó
HAL_TIM_Base_Init(&TIM3_Handler);
HAL_TIM_Base_Start_IT(&TIM3_Handler); //ê1Äü¶¨ê±Æ÷3oí¶¨ê±Æ÷3¸üDÂÖD¶Ï£oTIM_IT_UPDATE
}
//¶¨ê±Æ÷μ×2áÇy¶ˉ£¬¿aÆôê±Öó£¬éèÖÃÖD¶ÏóÅÏè¼¶
//′Ëoˉêy»á±»HAL_TIM_Base_Init()oˉêyμ÷óÃ
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM3)
{
__HAL_RCC_TIM3_CLK_ENABLE(); //ê1ÄüTIM3ê±Öó
HAL_NVIC_SetPriority(TIM3_IRQn,1,3); //éèÖÃÖD¶ÏóÅÏè¼¶£¬ÇàÕ¼óÅÏè¼¶1£¬×óóÅÏè¼¶3
HAL_NVIC_EnableIRQ(TIM3_IRQn); //¿aÆôITM3ÖD¶Ï
}
}
//¶¨ê±Æ÷3ÖD¶Ï·tÎñoˉêy
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TIM3_Handler);
}
//»Øμ÷oˉêy£¬¶¨ê±Æ÷ÖD¶Ï·tÎñoˉêyμ÷óÃ
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&TIM3_Handler))
{
LED1=!LED1; //LED1·′×a
}
}
void Getdistance()
{
__HAL_TIM_SET_COUNTER(&TIM3_Handler,0);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);
delay_us(20);
HAL_TIM_Base_Start_IT(&TIM3_Handler);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);
HAL_TIM_Base_Stop(&TIM3_Handler);
int time;
time=__HAL_TIM_GET_COUNTER(&TIM3_Handler);
printf("%d",time);
}
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
/************************************************
ALIENTEK °¢2¨ÂTSTM32F429¿a·¢°åêμÑé9
êäèë2¶»ñêμÑé-HAL¿aoˉêy°æ
¼¼êõÖ§3Ö£owww.openedv.com
ìÔ±|μêÆì£ohttp://eboard.taobao.com
1Ø×¢Î¢DÅ1«Öúƽì¨Î¢DÅoÅ£o"ÕyμãÔ-×ó"£¬Ãa·Ñ»ñè¡STM32×êáÏ¡£
1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
************************************************/
int main(void)
{
HAL_Init(); //3õê¼»ˉHAL¿a
Stm32_Clock_Init(360,25,2,8); //éèÖÃê±Öó,180Mhz
delay_init(180); //3õê¼»ˉÑóê±oˉêy
uart_init(115200); //3õê¼»ˉUSART
LED_Init(); //3õê¼»ˉLED
KEY_Init(); //3õê¼»ˉ°′¼ü
TIM3_Init(5000-1,9000-1); //¶¨ê±Æ÷33õê¼»ˉ£¬¶¨ê±Æ÷ê±ÖóÎa90M£¬·ÖÆμÏμêyÎa9000-1£¬
//ËùòÔ¶¨ê±Æ÷3μÄÆμÂêÎa90M/9000=10K£¬×Ô¶ˉÖØ×°ÔØÎa5000-1£¬ÄÇÃ′¶¨ê±Æ÷ÖüÆú¾íêÇ500ms
while(1)
{
Getdistance();
delay_ms(5);
}
}
|
|