|
#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);
}
}
}
|
评分
-
查看全部评分
|