当前位置: 首页 > news >正文

物流公司官方网站琶洲网站建设

物流公司官方网站,琶洲网站建设,中国网站开发排名,手机端竞价恶意点击能防止吗输入捕获是定时器的功能之一#xff0c;配合外部引脚#xff0c;捕获脉宽时间或采集周期。 CPU中的定时器最基本的功能就是计数功能#xff0c;其次是输入捕获(IC)#xff0c;再次就是比较输出(OC)#xff0c;还有就是使用引脚对外部时钟进行计数#xff0c;触发信号捕捉…输入捕获是定时器的功能之一配合外部引脚捕获脉宽时间或采集周期。 CPU中的定时器最基本的功能就是计数功能其次是输入捕获(IC)再次就是比较输出(OC)还有就是使用引脚对外部时钟进行计数触发信号捕捉等。 1、输入捕获功能图 2、测试程序 #include TIM1_EdgeAligned_InputCapture.h #include LED.h/* 将PA3复用为TIM1_CH1用作捕获信号输入引脚 PA4为TIM3中断时输出的信号将这两个脚短接使用示波器跟踪PA0的信号就可以测试。 */void TIM1_COUNTERMODE_UP_IC1_Init(uint16_t arr,uint16_t psc); void TIM3_COUNTERMODE_UP_Init(uint16_t arr,uint16_t psc);void HAL_TIM_IC_MspInit1(TIM_HandleTypeDef *htim) {GPIO_InitTypeDef GPIO_InitStructure;if(htim-Instance TIM1)//初始化TIM1{__HAL_RCC_TIM1_CLK_ENABLE(); //使能TIM1时钟__HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟GPIO_InitStructure.Pin GPIO_PIN_3; //选择第3脚,PA3是为TIM1_CH1GPIO_InitStructure.Mode GPIO_MODE_AF_PP; //复用功能推挽模式GPIO_InitStructure.Pull GPIO_PULLUP; //引脚上拉被激活GPIO_InitStructure.Speed GPIO_SPEED_FREQ_VERY_HIGH; //引脚速度为最高速GPIO_InitStructure.Alternate GPIO_AF13_TIM1;//选择AF13,将PA3引脚复用为TIM1_CH1HAL_GPIO_Init(GPIOA, GPIO_InitStructure);//根据GPIO_InitStructureure结构变量指定的参数初始化GPIOA的外设寄存器//将PA3初始化为TIM1_CH1功能,用作IC11输入捕获引脚HAL_NVIC_SetPriority(TIM1_CC_IRQn,1, 0); //设置捕获/比较的中断优先级为1HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); //开启捕获/比较总中断}if(htim-Instance TIM3)//初始化TIM3{} }//函数功能:TIM1中基本计数功能,并使能了更新中断,每次重装ARR值时会产生一次更新中断 //arr自动重装值。 //psc时钟预分频数 //TIM1_COUNTERMODE_UP_IC1_Init(20000,240);//若使用HSE当arr20000,psc240时,则为200ms,误差为10us; //TIM1_COUNTERMODE_UP_IC1_Init(20000,80);//若使用HSI当arr20000,psc80时,则为200ms,误差为10us; void TIM1_COUNTERMODE_UP_IC1_Init(uint16_t arr,uint16_t psc) {GPIO_InitTypeDef GPIO_InitStructure;TIM_HandleTypeDef TIM1_HandleStructure;TIM_IC_InitTypeDef TIM1_IC_InitStructure;//HAL_TIM_IC_MspInit开始/__HAL_RCC_TIM1_CLK_ENABLE(); //使能TIM1时钟__HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟GPIO_InitStructure.Pin GPIO_PIN_3; //选择第3脚,PA3是为TIM1_CH1GPIO_InitStructure.Mode GPIO_MODE_AF_PP; //复用功能推挽模式GPIO_InitStructure.Pull GPIO_PULLUP; //引脚上拉被激活GPIO_InitStructure.Speed GPIO_SPEED_FREQ_VERY_HIGH; //引脚速度为最高速GPIO_InitStructure.Alternate GPIO_AF13_TIM1;//选择AF13,将PA3引脚复用为TIM1_CH1HAL_GPIO_Init(GPIOA, GPIO_InitStructure);//根据GPIO_InitStructureure结构变量指定的参数初始化GPIOA的外设寄存器//将PA3初始化为TIM1_CH1功能,用作IC11输入捕获引脚HAL_NVIC_SetPriority(TIM1_CC_IRQn,1, 0); //设置捕获/比较的中断优先级为1HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); //开启捕获/比较总中断 //HAL_TIM_IC_MspInit结束/TIM1_HandleStructure.Instance TIM1; //选择TIM1TIM1_HandleStructure.Init.Period arr-1;//设置在下一个更新事件产生时装入自动重载入寄存器TIMx_ARR的值//将(arr-1)写入自动重载入寄存器TIMx_ARR,设置自动重装载值TIM1_HandleStructure.Init.Prescaler psc-1;//设置用来作为TIMx时钟频率除数的预分频值//将(psc-1)写入预装载寄存器TIMx_PSC,的PSC[15:0],设置预分频值//计数器的时钟频率CK_CNTfCK_PSC/(PSC[15:0]1)TIM1_HandleStructure.Init.ClockDivision TIM_CLOCKDIVISION_DIV1;//时钟不分频,则tDTStCK_INT//若使用HSE计算公式:arr*psc/24000000/1,当arr20000,psc240时,则为200ms,误差为10us;//若使用HSI计算公式:arr*psc/8000000/1,当arr20000,psc80时,则为200ms,误差为100us;TIM1_HandleStructure.Init.CounterMode TIM_COUNTERMODE_UP;//向上计数TIM1_HandleStructure.Init.RepetitionCounter 1 - 1;//不重复计数//将(1-1)写入重复计数寄存器TIMx_RCR中的REP[7:0],设置重复计数器值TIM1_HandleStructure.Init.AutoReloadPreload TIM_AUTORELOAD_PRELOAD_DISABLE;//自动重装载寄存器没有缓冲//不允许将TIMx自动重新加载寄存器TIMx_ARR的值被装入缓冲区;HAL_TIM_Base_Init(TIM1_HandleStructure); //TIM1初始化//选择计数器模式:向上计数//设置时钟分频因子:时钟不分频,则tDTStCK_INT//设置自动重装载:自动重装载寄存器没有缓冲//设置自动重装载值:TIM_Base_InitStructure.Period//设置预分频值:TIM_Base_InitStructure.Prescaler//设置重复计数器值:TIM_Base_InitStructure.RepetitionCounter//启动更新事件:将TIMx_EGR中的UG位置1,由软件产生更新事件TIM1_IC_InitStructure.ICPolarity TIM_ICPOLARITY_RISING; //上升沿捕获TIM1_IC_InitStructure.ICSelection TIM_ICSELECTION_DIRECTTI;//CC1通道配置为输入TIM1_IC_InitStructure.ICPrescaler TIM_ICPSC_DIV1; //输入不分频TIM1_IC_InitStructure.ICFilter 0; //输入无滤波HAL_TIM_IC_ConfigChannel(TIM1_HandleStructure, TIM1_IC_InitStructure, TIM_CHANNEL_1);//配置通道1输入捕获HAL_TIM_IC_Start_IT(TIM1_HandleStructure, TIM_CHANNEL_1);//使能输入捕获1中断使能输入捕获1通道 }//函数功能:TIM3中基本计数功能,并使能了更新中断,每次重装ARR值时会产生一次更新中断 //arr自动重装值。 //psc时钟预分频数 //TIM3_COUNTERMODE_UP_Init(20000,240);//若使用HSE当arr20000,psc240时,则为200ms,误差为10us; //TIM3_COUNTERMODE_UP_Init(20000,80);//若使用HSI当arr20000,psc80时,则为200ms,误差为10us; void TIM3_COUNTERMODE_UP_Init(uint16_t arr,uint16_t psc) {TIM_HandleTypeDef TIM3_HandleStructure;//HAL_TIM_Base_MspInit开始/__HAL_RCC_TIM3_CLK_ENABLE(); //使能TIM3时钟HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); //设置中断优先级HAL_NVIC_EnableIRQ(TIM3_IRQn); //使能TIM3中断 //HAL_TIM_Base_MspInit开始/TIM3_HandleStructure.Instance TIM3; //选择TIM3TIM3_HandleStructure.Init.Period arr-1;//设置在下一个更新事件产生时装入自动重载入寄存器TIMx_ARR的值//将(arr-1)写入自动重载入寄存器TIMx_ARR,设置自动重装载值TIM3_HandleStructure.Init.Prescaler psc-1;//设置用来作为TIMx时钟频率除数的预分频值//将(psc-1)写入预装载寄存器TIMx_PSC,的PSC[15:0],设置预分频值//计数器的时钟频率CK_CNTfCK_PSC/(PSC[15:0]1)TIM3_HandleStructure.Init.ClockDivision TIM_CLOCKDIVISION_DIV1;//时钟不分频,则tDTStCK_INT//若使用HSE计算公式:arr*psc/24000000/1,当arr20000,psc240时,则为200ms,误差为10us;//若使用HSI计算公式:arr*psc/8000000/1,当arr20000,psc80时,则为200ms,误差为100us;TIM3_HandleStructure.Init.CounterMode TIM_COUNTERMODE_UP;//向上计数TIM3_HandleStructure.Init.RepetitionCounter 1 - 1;//不重复计数//将(1-1)写入重复计数寄存器TIMx_RCR中的REP[7:0],设置重复计数器值TIM3_HandleStructure.Init.AutoReloadPreload TIM_AUTORELOAD_PRELOAD_DISABLE;//自动重装载寄存器没有缓冲//不允许将TIMx自动重新加载寄存器TIMx_ARR的值被装入缓冲区;HAL_TIM_Base_Init(TIM3_HandleStructure); //TIM3初始化//选择计数器模式:向上计数//设置时钟分频因子:时钟不分频,则tDTStCK_INT//设置自动重装载:自动重装载寄存器没有缓冲//设置自动重装载值:TIM_Base_InitStructure.Period//设置预分频值:TIM_Base_InitStructure.Prescaler//设置重复计数器值:TIM_Base_InitStructure.RepetitionCounter//启动更新事件:将TIMx_EGR中的UG位置1,由软件产生更新事件HAL_TIM_Base_Start_IT(TIM3_HandleStructure);//允许计数器产生更新中断;//如果计数器不是工作在触发模式中,则开始计数 }//函数功能:TIM1输入捕获中断服务程序 //IC1为上升沿捕获,所以捕获周期是TIM3周期的2倍 void TIM1_CC_IRQHandler(void) { HAL_TIM_PeriodElapsedCallback开始/if (_HAL_TIM_GET_FLAG(TIM1,TIM_FLAG_CC1) ! RESET){//根据TIM_FLAG_CC1,读TIMx状态寄存器(TIMx_SR)中输入捕获中断标志位_HAL_TIM_CLEAR_IT(TIM1, TIM_IT_CC1);//TIM_IT_CC1,令CC1IF0清除输入捕获中断标志位TIM1_LED_Toggle();} HAL_TIM_PeriodElapsedCallback结束/ }//函数功能:TIM3中断服务程序 void TIM3_IRQHandler(void) { HAL_TIM_PeriodElapsedCallback开始/if (_HAL_TIM_GET_FLAG(TIM3,TIM_FLAG_UPDATE) ! RESET){//根据TIM_FLAG_UPDATE,读TIMx状态寄存器(TIMx_SR)中更新中断标志位_HAL_TIM_CLEAR_IT(TIM3, TIM_IT_UPDATE);//TIM_IT_UPDATE,令UIF0清除定时器更新中断标志位TIM3_LED_Toggle();} HAL_TIM_PeriodElapsedCallback结束/ } #ifndef __TIM1_EdgeAligned_InputCapture_H #define __TIM1_EdgeAligned_InputCapture_H#include py32f0xx_hal.h#define _HAL_TIM_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)-SR (__FLAG__)) (__FLAG__)) //根据__FLAG__,读TIMx状态寄存器(TIMx_SR)中相应的中断标志位 //TIM_FLAG_UPDATE,若UIF1,建立更新事件 //TIM_FLAG_CC1,若CC1IF1,如果通道CC1配置为输出模式则建立CC1输出事件 //TIM_FLAG_CC1,若CC1IF1,如果通道CC1配置为输入模式则建立CC1捕获事件 //TIM_FLAG_CC2,若CC2IF1,如果通道CC2配置为输出模式则建立CC2输出事件 //TIM_FLAG_CC2,若CC2IF1,如果通道CC2配置为输入模式则建立CC2捕获事件 //TIM_FLAG_CC3,若CC3IF1,如果通道CC3配置为输出模式则建立CC3输出事件 //TIM_FLAG_CC3,若CC3IF1,如果通道CC3配置为输入模式则建立CC3捕获事件 //TIM_FLAG_CC4,若CC4IF1,如果通道CC4配置为输出模式则建立CC4输出事件 //TIM_FLAG_CC4,若CC4IF1,如果通道CC4配置为输入模式则建立CC4捕获事件 //TIM_FLAG_COM若COMIF1则建立COM事件 //TIM_FLAG_TRIGGER若TIF1则建立触发事件 //TIM_FLAG_BREAK,若BIF1,则建立刹车事件 //TIM_FLAG_CC1OF,若CC1OF1,则表示计数器x的值被捕获到TIMx_CCR1寄存器 //TIM_FLAG_CC2OF,若CC2OF1,则表示计数器x的值被捕获到TIMx_CCR2寄存器 //TIM_FLAG_CC3OF,若CC3OF1,则表示计数器x的值被捕获到TIMx_CCR3寄存器 //TIM_FLAG_CC4OF,若CC4OF1,则表示计数器x的值被捕获到TIMx_CCR4寄存器#define _HAL_TIM_CLEAR_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)-SR ~(__INTERRUPT__)) //根据__INTERRUPT__,将TIMx状态寄存器(TIMx_SR)中相应的中断标志位置0 //TIM_IT_UPDATE,令UIF0清除定时器更新中断标志位 //TIM_IT_CC1,令CC1IF0清除捕获/比较1中断标志位 //TIM_IT_CC2,令CC2IF0清除捕获/比较2中断标志位 //TIM_IT_CC3,令CC3IF0清除捕获/比较3中断标志位 //TIM_IT_CC4,令CC4IF0清除捕获/比较4中断标志位 //TIM_IT_COM,令COMIF0清除COM事件中断标志位 //TIM_IT_TRIGGER,令TIF0清除触发中断标志位 //TIM_IT_BREAK,令BIF0,清除刹车中断标志位extern void TIM1_COUNTERMODE_UP_IC1_Init(uint16_t arr,uint16_t psc); extern void TIM3_COUNTERMODE_UP_Init(uint16_t arr,uint16_t psc); #endif /* __TIM1_EdgeAligned_InputCapture_H */ #include py32f0xx_hal.h #include SystemClock.h #include delay.h #include LED.h #include TIM1_EdgeAligned_InputCapture.hint main(void) {HSE_Config(); // HAL_Init();//systick初始化delay_init();HAL_Delay(1000);TIM1_LED_Init();TIM3_LED_Init();TIM1_COUNTERMODE_UP_IC1_Init(20000,240);//若使用HSE当arr20000,psc240时,则为200ms,误差为10us;TIM3_COUNTERMODE_UP_Init(20000,240);//若使用HSE当arr20000,psc240时,则为200ms,误差为10us;while (1){delay_ms(100); // TIM1_LED_Toggle(); // TIM3_LED_Toggle();} } #include LED.hvoid TIM1_LED_Init(void); void TIM3_LED_Init(void);//函数功能:TIM1_LED灯引脚初始化,并配置为关灯 void TIM1_LED_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;__HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟//初始化PA0GPIO_InitStructure.Pin GPIO_PIN_0; //选择第0脚GPIO_InitStructure.Pull GPIO_PULLUP; //引脚上拉被激活GPIO_InitStructure.Speed GPIO_SPEED_FREQ_VERY_HIGH; //配置GPIO速度为极高GPIO_InitStructure.Mode GPIO_MODE_OUTPUT_PP; //设置引脚工作模式为推挽输出方式HAL_GPIO_Init(GPIOA, GPIO_InitStructure);//根据GPIO_InitStructure结构变量指定的参数初始化GPIOA的外设寄存器TIM1_LED_Off(); }//函数功能:TIM3_LED灯引脚初始化,并配置为关灯 void TIM3_LED_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;__HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟//初始化PB5GPIO_InitStructure.Pin GPIO_PIN_4; //选择第4脚GPIO_InitStructure.Pull GPIO_PULLUP; //引脚上拉被激活GPIO_InitStructure.Speed GPIO_SPEED_FREQ_VERY_HIGH; //配置GPIO速度为极高GPIO_InitStructure.Mode GPIO_MODE_OUTPUT_PP; //设置引脚工作模式为推挽输出方式HAL_GPIO_Init(GPIOA, GPIO_InitStructure);//根据GPIO_InitStructure结构变量指定的参数初始化GPIOA的外设寄存器TIM3_LED_Off(); } 将PA3复用为TIM1_CH1用作捕获信号输入引脚PA4为TIM3中断时输出的信号将这两个脚短接使用示波器跟踪PA0的信号就可以测试。
http://www.yutouwan.com/news/291943/

相关文章:

  • 南京网站排名外包免费代理浏览网页
  • ecetc商务网站建设工程师潍坊网站建设一站式服务
  • 建设医院官方网站手工折纸
  • 全球外贸网站排名wordpress著名案例
  • 网站商城开发公司广州做网站的网络公司
  • 无锡网站制作优化推广公司网络公司门头
  • 做旅行义工网站蚁wordpress默认模板目录在哪里
  • 建设工程教育网站淘宝网站c 设计怎么做
  • 百度网站建立遵义高端网站建设
  • 企业做网站收费重庆建筑网络平台
  • 哪个网站建设公司泸州网站建设唐网互联
  • 专业网站设计立找亿企邦企业设计网站公司排名
  • 哪里找专业做网站的人常熟采集伪原创wordpress
  • 网站推广介绍网站建设代码实例
  • 网站重做网站建设域名注册
  • 网站建设夬金手指排名壹陆wordpress视差插件
  • 玩具网站开发背景网站项目接单
  • 建设注册管理中心网站首页网络营销有哪些内容
  • 文章收录网站黑马培训
  • 渭南建网站湖南新能源公司中企动力网站建设
  • iis6cgi php网站缓存旅游网站设计方案
  • 苏中建设集团网站网址女装关键词排名
  • 2018春节放假安排 网站建设如何做网站的统计
  • 网站建设ssc源码平台怎么做购物微信网站
  • 西安网站建设比较好的公司weex做网站
  • 上海官方网站建设企业网站建设与管理试题
  • 网站建设技术哪些内容做网络写手 哪个网站比较好
  • 做一个小型网站多少钱dz如何做门户网站
  • 5173游戏交易网站源码网络运营需要学什么专业
  • 乐山网站营销推广哪家公司好上海火迎网络推广运营优化