在人员监控设备研发中,如何对单片机的通用定时器进行配置?
笔者近期在进行人员监控设备的研发。人员监控设备是一款集地理信息定位、运动轨迹监测、电子围栏设置、救援报警等多种功能于一体的监控终端。
可以应用在工地人员监控、产业园区人员监控、矿山人员监控、老人安全监控、宠物智能监控等多种监控环境之中。
被监管人员佩戴上跟踪监控终端后,管理者就可以在云端后台实时可视化的对相关人员运行轨迹和活动范围进行监控管理。
管理者还可以在危险区域设置电子围栏,当监管人员超出电子围栏区域时,跟踪监控设备会立即发出报警提醒,保证监管人员安全。
当监管人员遇到危险时,可以长按监控终端上的急救按钮,管理者就可以第一时间收到求救信息,并立即展开救援。这对于一些危险职业人员是一种非常好的保护措施。我们在进行人员监控设备的研发过程中,会对产品内部的单片机的定时器进行配置。
通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器中的核心部分是一个可进行编程操作的预分频器驱动的16位自动装载计数器。
定时器可以运用在不同的场合之中,如:产生输出波形(输出比较和PWM)。我们在使用定时器预分频器和RCC时钟控制器预分频器时,可以将脉冲长度和波形周期根据产品性能的需要在几个微秒到几个毫秒之间进行调整。
每一个定时器都是完全独立的个体,是没有办法做到共享资源的。相信很多产品研发人员都会需要对定时器进行设置,那么具体如何操作呢?下面笔者对具体的编程过程进行详细展示。
配置示例:
系统时钟8M、配置TIM3 1ms中断一次。
//1ms 中断
void TIM3Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period = 1000;
TIM_TimeBaseStructure.TIM_Prescaler = 7;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
//中断优先级NVIC设置
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );
TIM_Cmd(TIM3, ENABLE);
}