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

建站推荐网站电脑行业网站模板

建站推荐网站,电脑行业网站模板,中山画册设计公司,wordpress 添加备案号理论 预分频寄存器(TIMx_PSC)#xff1a;由于时钟源为#xff1a;72MHz#xff0c;T 1/f 1/72MHz#xff0c;由于不好计算周期时间#xff0c;则需要分频#xff0c;若分72则T 1/1MHz 1us(1MHz 一百万秒) 计数方式#xff1a;向上(递增到某个数触发中断)、向下(递… 理论 预分频寄存器(TIMx_PSC)由于时钟源为72MHzT 1/f 1/72MHz由于不好计算周期时间则需要分频若分72则T 1/1MHz 1us(1MHz 一百万秒) 计数方式向上(递增到某个数触发中断)、向下(递减到某一个数触发中断)、中心计数(递增到某一个数触发中断再递减到某一个数触发中断) 比较值(参考链接) PWM1模式若计数值小于有效值则高电平计数值大于有效值则低电平可以控制比较值来调节占空比 PWM2模式与PWM1模式相反计数值小于有效值则低电平大于有效值则高电平 复用Pin脚本身除了支持普通GPIO功能之外还支持别的功能(使用别的功能就叫复用) 重映射Pin脚本身不支持这些功能配置重映射寄存器使其具备别的功能 定时器分类 型号STM32F103ZET6 基本定时器TIM6、TIM7 通用定时器TIM2~TIM5 高级定时器TIM1、TIM8 代码编写 定时器中断实验LED灯一秒闪烁一次、LED灯两秒闪烁一次、计算单片机运行时间、串口5秒返回单片机运行时间 PWM信号输出呼吸灯、电机(由慢到快)、舵机 输入捕获检测信号脉冲宽度(舵机脉冲宽度) LED灯、UART、定时器、PWM配置 LED灯配置请看链接 串口配置请看链接 配置定时器 72/7200 0.01T 1/f 1/0.01MHz 100us计数10000触发中断100us * 10000 1s1s 1000000us但单片机都是以0开始所以分频值以及计数值都 -1 配置定时器向上计数溢出中断NVIC(嵌套向量中断控制器) 定时器(PWM)控制LED灯配置 LED(PB5)引脚说明 所以配置定时器3通道二但配置完发现图中不符需手动修改 定时器(PWM)控制电机配置 配置PB4引脚PWM控制电机速度 定时器(PWM)控制舵机配置 舵机脉冲周期20ms 输入捕获定时器配置 配置定时器全局中断NVIC LED灯闪烁、串口输出运行时间 LED1每隔一秒电平翻转一次LED2每隔两秒电平翻转一次串口输出单片机运行时间 Cube IDE代码 main.c /* USER CODE BEGIN Includes */ #include stdio.h //27行 #include string.h //28行 /* USER CODE END Includes *//* USER CODE BEGIN 0 */ uint32_t G_Timer_Count 0; //59行 uint8_t UART_Count[200]; uint8_t UART_Flag 0; /* USER CODE END 0 *//* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(htim1); //开启定时器97行 /* USER CODE END 2 */if(UART_Flag) //104行 {sprintf(UART_Count,MCU run time is %lus,G_Timer_Count);HAL_UART_Transmit(huart1, UART_Count, strlen(UART_Count), 1000);UART_Flag 0; //打印一次后标志0等中断五次(5s)后 }/* USER CODE BEGIN 4 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //定时器触发函数,157行 {if(htim htim1){HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);G_Timer_Count;if((G_Timer_Count % 5) 0)UART_Flag 1; //每隔五秒让标志1if((G_Timer_Count % 2) 0) //LED2每隔两秒翻转电平HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);}} /* USER CODE END 4 */PWM信号LED呼吸灯、电机、舵机 理论参考链接 PWM信号控制LED产生一个呼吸灯效果以及对电机控制控制速度由慢到快 Cube IDE代码 main.c /* USER CODE BEGIN PV */ uint8_t PWM_Value 0,LED_PWM_Value 0,SG_PWM 5; //47行 /* USER CODE END PV *//* USER CODE BEGIN 2 */ //参数1定时器句柄(指向配置好的定时器结构体的指针)参数2定时器通道,93行 HAL_TIM_PWM_Start(htim3, TIM_CHANNEL_2); //开启定时器3通道2 PWM HAL_TIM_PWM_Start(htim3, TIM_CHANNEL_1); //开启定时器3通道1 PWM HAL_TIM_PWM_Start(htim4, TIM_CHANNEL_1); //开启定时器4通道1 PWM /* USER CODE END 2 *///103行 PWM_Value; PWM_Value PWM_Value % 200; if(PWM_Value 99)LED_PWM_Value 200 - PWM_Value; //大于99时从大到小(100,99...) elseLED_PWM_Value PWM_Value; HAL_Delay(25); //参数1定时器句柄参数2定时器通道,参数3比较值 __HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_2, LED_PWM_Value); //设置LED比较值 __HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, LED_PWM_Value); //设置电机比较值if(PWM_Value % 30 0) {//每0.1ms计数值1则0.5ms比较值模式1则占空比(高电平)0.5msSG_PWM 5;if(SG_PWM 25)SG_PWM 5;__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_1, SG_PWM); //设置舵机比较值 }输入捕获(IC) 捕获高电平持续时间 Cube IDE代码 捕获PWM高电平的时间 main.c /* USER CODE BEGIN PTD */ uint32_t ic_state0,period_count0,ic_count0,us_count; //32行 /* USER CODE END PTD *//* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(htim2); //开启普通定时器中断HAL_TIM_IC_Start_IT(htim2, TIM_CHANNEL_2); //开启捕获定时器中断printf(Please connect MCU51 P2.0,and let SG90 run to detect signal!\n); //串口输出捕获的时间(记得配置串口重定向) /* USER CODE END 2 */if(ic_state 2 ) //103行(while里) {/* 始终设置的是1us触发计数值加1* 一个周期大概65ms若大于65只有捕获中断函数不好使* 若period_count为1则代表过了一个中断周期时间(1*65535)us* 若没有到整个中断周期时间则剩下的为ic_count* 所以两个相加等于整个高电平时间*/us_count ic_count period_count * 0xFFFF;printf(High level duration: %ldus \n,us_count); //(float)(us_count)/1000.000ic_state 0; //再将中间键恢复0方便下次上升沿触发中断计时 }/* USER CODE BEGIN 4 */ void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) //输入捕获触发函数,161行 {if(TIM2 htim-Instance){if ( ic_state 0 ){__HAL_TIM_SET_COUNTER(htim,0); //将定时器从零开始计时__HAL_TIM_SET_CAPTUREPOLARITY(htim2, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_FALLING); //设置成下降沿触发ic_state 1; //下次触发中断时(下降沿)则运行elseperiod_count 0;ic_count 0;}else{ic_count HAL_TIM_ReadCapturedValue(htim2,TIM_CHANNEL_2); //读取定时器计数值__HAL_TIM_SET_CAPTUREPOLARITY(htim2, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_RISING); //设置成上降沿触发ic_state 2; //进入while里面的判断}} }void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //普通定时器中断触发函数 {if(TIM2 htim-Instance){if(ic_state1){if(period_count0XFFFF) //一次周期大约65ms若进入这个需要(65*65535)ms{ic_state2;ic_count0XFFFF; //返回一个超大数显示错误}elseperiod_count;}} } /* USER CODE END 4 */
http://www.eeditor.cn/news/120216/

相关文章:

  • 南阳网站推广效果怎样手机做网站教程
  • 企业建站系统模板宿州官方网站建设
  • 织梦招商加盟网站源码seo网站快速
  • php做网站登陆验证建网站语言
  • 涉县网站建设长春建网站一般多少钱
  • 玉环网站建设公司如何设计一个企业网站
  • 内容型网站网站建设运营成本
  • 现在做网站到底需要多少钱seo免费优化网站
  • 电脑店免费建站海南网络营销
  • 在百度做推广送网站好吗金融网站建设
  • 高权重域名做网站上海公司公开发行股票1984
  • 做女装网站应怎么定位网站监控 重启
  • 黄冈网站推广在线观看wordpress嵌入优酷视频
  • 东莞网站排名优化价格wordpress出现两个首页
  • 网站做的好电子商务创建网站
  • 东莞网站优化哪家好wordpress8小时前
  • 两个网站共用一个空间丰田车营销网站建设的纲要计划书
  • 站酷设计网站首页糖果屋网站建设策划书
  • 百度网站建设中心屏山移动网站建设
  • 开发网站的软件互联网包括哪些方面
  • 网站做竞价对优化有好处吗wordpress轻社交lightsns
  • 东阳网站建设微信开发滨州公司网站建设推广
  • 免费建简单网站东莞做网站贴吧
  • 网站开发经验与教训范文网页跟网站的区别
  • 我要表白网站在线制作做的网站 如何在局域网内访问
  • 如何做介绍一门课程的网站承德市外贸网站建设
  • 海南网站建设海南网络公司天津网站建设 Wordpress
  • 遵义广告公司网站建设优化工具 wordpress
  • 特卖网站设计四川工程造价信息网
  • 乐都网站建设哪家好网站建设 网页