|
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
//TIM3,外部計數模式
void TIM3_CH2_Excnt_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3 時鐘使能
RCC->APB2ENR|=1<<2; //使能PORTA時鐘
GPIOA->CRL&=0X0FFFFFFF; //PA7 清除之前設置
GPIOA->CRL|=0X80000000; //PA7 輸入
GPIOA->ODR|=1<<7; //PA7 上拉
TIM3->ARR=arr; //設定計數器自動重裝值
TIM3->PSC=psc; //預分頻器
TIM3->CCMR1|=1<<8; //CC2S=01 選擇輸入端 IC2映射到TI2上
TIM3->CCMR1|=0<<12; //IC2F=0000 配置輸入濾波器 不濾波
TIM3->CCER|=1<<5; //CC1P=0 下降沿計數
TIM3->SMCR|=6<<4; //觸發選擇:濾波后的定時器輸入2(TI2FP2)
TIM3->SMCR|=7<<0; //外部時鐘模式1
TIM3->CR1|=1<<0; //啟動計數器,CEN=1
}
int main(void)
{
u32 oldcnt=0;
Stm32_Clock_Init(9); //系統時鐘設置
uart_init(72,9600); //串口初始化為9600
delay_init(72); //延時初始化
TIM3_CH2_Excnt_Init(0XFFFF,0); //外部計數,最大值0xffff
while(1)
{
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
if(oldcnt!=TIM3->CNT)
{
oldcnt=TIM3->CNT;
printf("cnt:%d\r\n",oldcnt);
}
}
}
|
評分
-
查看全部評分
|