STM42F407对外部脉冲计数:定时器初始化
//对外部脉冲计数//GPIOA0接1按键,按下为高电平,复用到tiM8的ETR(外部计数脉冲输入端)
// 定时器8对GPIOA0输入的脉冲计数
//////////////////////////////////////////////////////////////////////////////////
//TIM8_ETR 计数初始化
void TIM8_ETR_Counter_Init(u16 arr,u16 psc )
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB2PeriphclockCmd(RCC_APB2Periph_TIM8,ENABLE);
//TIM8时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//使能PORTA时钟
// GPIOA0 工作模式为复用
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
//速度100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM8);
//PA0复用位定时器8
//初始化定时器TIM8
TIM_TimeBaseStructure.TIM_Prescaler=psc;//定时器分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
//向上计数模式
TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM8,&TIM_TimeBaseStructure);
// 外部时钟配置初始化
TIM_ITRxExternalClockConfig(TIM8,TIM_TS_ETRF);
TIM_ETRClockMode2Config(TIM8,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_Inverted,0x00);
TIM_SetCounter(TIM8, 0);
TIM_ITConfig(TIM8,TIM_IT_Update,DISABLE);
//不允许更新中断 ,直接读计数值
TIM_Cmd(TIM8, ENABLE);//使能TIM8
}
在主程序,可以通过函数读计数值:TIM_GetCounter( TIM8); //读计数值
会产生误差么 同问
会产生误差么 误差应该不大,可以接收
结构化模块化的程序设计的思想,使最基本的要求
CPU借助于APB总线访问相关寄存器达到对I2C1工作模块的控制
每次代码提交的时候都会生成一条提交记录
清除与电镀动作都会在化学过程中完成
如果已经找到正确的值,继续测试一个值根本没有意义。
切割完了第四个字符之后,再依次扫描剩下的空间,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始并依次扫描直到所扫描的这一竖上的所有点的灰度值全为0时认为是字符的结束。
通常用发光二极管LED代替小灯
累加寄存器存储运行的数据和运算后的数据。
确定好硬件原理图,硬件布线,最后才是软件的开发
断优先级有冲突导致UART-RX的正常接收
流编辑器,是一个使用简单紧凑的编程语言来解析和转换文本超强实用程序。
ART2固定使用PCLK时钟,只有开启和关闭的问题,不存在其它时钟源选择
页:
[1]