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

别人 网站 粘贴 html 推广免费淘宝关键词工具

别人 网站 粘贴 html 推广,免费淘宝关键词工具,网站建设的看法有哪些,网络营销软件条件需求分析 上一个案例我们输出了PWM波,这个案例我们使用输入捕获功能,来测试PWM波的频率/周期。 把测到的结果通过串口发送到电脑,检查测试的结果。 如何测量 1、输入捕获功能主要是:测量输入通道的上升沿和下降沿 2、让第一个…
需求分析

上一个案例我们输出了PWM波,这个案例我们使用输入捕获功能,来测试PWM波的频率/周期。

把测到的结果通过串口发送到电脑,检查测试的结果。

如何测量

1、输入捕获功能主要是:测量输入通道的上升沿和下降沿

2、让第一个上升沿触发,第二个上升沿卡个事件,可以测量到周期

3、然后通过周期反推频率

输入捕获包括三个部分:

共四路,每路都有自己的输入引脚

计数器部分

捕获寄存器部分

过程

通过之前产生的方波信号,然后再配置输入对这个方波信号进行测量,用杜邦线

连接两个引脚,tim4和tim5的引脚,昨天tim5的引脚产生PWM方波,用tim4定时器用于测量。

产生中断会触发中断函数(这个函数将CNT计时器清零),但是触发中断函数之前会产生一个捕获比较事件,这个事件是将CNT的值搬到捕获比较1寄存器中。

上升沿会触发中断,产生搬用事件,并将CNT清零,

然后下一个上升沿会再次产生中断,那么会产生搬用事件将CNT计数器搬到寄存器中,可以抓取这个值,就是这个周期的事件。

设计相关寄存器

每个复用器都需要寄存器进行配置

CCMR1

CC2S:选择输入

IC1F:无滤波,可以抗干扰,一般在硬件就已经抗干扰啦,这里无滤波

CCIS: 输入有三种情况

PSC:预分频 三档2/4/8分频

CCER:

CC1P:上升沿还是下降沿

CC1E: 输入使能

CR2:

TI1S:采用TIMx_CH1的线路

DIER:捕获比较中断

CC1IE:允许中断

tim4.c
#include "tim4.h"void TIM4_Init(){//1.GPIO//1.1放时钟RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;//1.2 PB6 引脚 配置输入模式 浮空输入GPIOB->CRL &= ~ (GPIO_CRL_CNF6_1 | GPIO_CRL_MODE6);GPIOB->CRL |= GPIO_CRL_CNF6_0;//2.TIM4//2.0 先放时钟RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;//2.1 控制器 (不管 全部保留默认设72MHz)//2.2 时基单元//2.2.1 分频  计数频率就是1M 数一个数的时间就是1usTIM4->PSC = 72 - 1;//2.2.2 尺子越长越好TIM4->ARR = 65535;//2.3 输入和输出通道//2.3.1 通道输入还是输出TIM4->CCMR1 |= TIM_CCMR1_CC1S_0;TIM4->CCMR1 &= ~TIM_CCMR1_CC1S_1;//2.3.2 配置TI1复用器,选择CH1引脚直接过来的信号(默认就是)TIM4->CR2 &= ~TIM_CR2_TI1S;//2.3.3 配置滤波器(默认就是)TIM4->CCMR1 &= ~ TIM_CCMR1_IC1F;//2.3.4 配置边沿检测器(默认就是)TIM4->CCER &= ~TIM_CCER_CC1P;//2.3.5 预分频器(默认就是)TIM4->CCMR1 &= ~ TIM_CCMR1_IC1PSC;//2.3.6 中断使能TIM4->DIER |= TIM_DIER_CC1IE;//3 有中断就需要配置NVIC//3.1 优先级分组NVIC_SetPriorityGrouping(3);//3.2 设置本中断的优先级NVIC_SetPriority(TIM4_IRQn,6);//3.3 对于片上外设 NVIC有一个使能控制NVIC_EnableIRQ(TIM4_IRQn);
}void TIM4_Start(void){// 开启通道使能TIM4->CCER |= TIM_CCER_CC1E;//开启计数器使能TIM4->CR1 |= TIM_CR1_CEN;
}void TIM4_Stop(void){// 关闭通道使能TIM4->CCER &= ~TIM_CCER_CC1E;//关闭计数器使能TIM4->CR1 &= ~TIM_CR1_CEN;
}uint8_t raise_edge_num = 0;uint16_t cnt = 0;double TIM4_GetCycleMs(void){return cnt/1000.0;
}double TIM4_GetFreq(void){return 1000000.0/cnt;
}void TIM4_IRQHandler (void){//片上外设都有标志位//-1 判断什么原因进入中断//0 清0 标志位if(TIM4->SR & TIM_SR_CC1IF){TIM4->SR &= ~TIM_SR_CC1IF;//业务逻辑//1 .让编号加1raise_edge_num ++;//2. 分开第一个上升沿和第二个上升沿的逻辑if (raise_edge_num == 1){//3 如果第一个上升沿到来 我直接从0开始计数TIM4->CNT = 0;}else if (raise_edge_num == 2){//4.如果第二个上升沿到来raise_edge_num = 0;//5.抄数,把值记录下来cnt = TIM4->CCR1;}}
}
tim4.h
#ifndef __TIM4_H__
#define __TIM4_H__#include "stm32f10x.h"void TIM4_Init();void TIM4_Start(void);void TIM4_Stop(void);double TIM4_GetCycleMs(void);double TIM4_GetFreq(void);#endif /* __TIM4_H__ */
main.c

我们要设置占空比,因为我们是tim5产生的pwm方波,如果没有占空比,也就没有方波产生,也就产生不了上升沿触发不了中断。

#include "usart1.h"
#include "string.h"
#include <stdio.h>
#include "m24c02.h"
#include "i2c.h"
#include "led.h"
#include "systick.h"
#include "tim6.h"
#include "tim5.h"
#include "tim4.h"typedef enum {LIGHT,DARK}LED_DIRCT;extern uint16_t cnt;int main(void)
{TIM5_Init();TIM5_PWMStart();TIM5_SetDuty(10);Usart1_Init();TIM4_Init();TIM4_Start();// LED_DIRCT direct = LIGHT;while (1){Delay_s(2);printf ("当前的周期时%.2fms,频率是%.2fHz",TIM4_GetCycleMs(),TIM4_GetFreq());}
}
HAL库

前面有两个__:是宏定义,

http://www.dt0577.cn/news/9327.html

相关文章:

  • 精彩网站制作百度在线入口
  • 重庆做网站changeke广安seo外包
  • 网站关键词搜索如何排名靠前软文广告怎么写
  • 在工行网站上如何做现金理财seo规则
  • 网站手机端 怎么做杭州谷歌seo公司
  • 做设计的搜素材上什么网站营销推广软文
  • 上线了网站新冠不易感染三种人
  • 太原做网站页面的一元手游平台app
  • B2B 网站开发计划进度表传媒网站
  • 做渠道该从哪些网站入手百度客户服务电话是多少
  • 个人建站流程详解微博seo排名优化
  • 银川迅雷网站建设百度上海推广优化公司
  • 大冶市规划建设局网站软文媒体
  • 遵义在线读者板留言东莞优化网站制作
  • 高大上 网站seo 适合哪些行业
  • 三级网站域名下载互联网seo是什么意思
  • 医院网站建设方案书公司seo是什么意思
  • 常州个人做网站短视频获客系统
  • 制作一个网站怎么做的合肥网站seo公司
  • 青岛 网站优化seo网站排名软件
  • 深圳做营销型网站南宁网站建设公司
  • 建设网站要什么电脑可以推广发广告的app
  • 椒江哪里可以做公司网站推广赚佣金
  • 园区网站建设服务公司优化大师官方网站
  • 品牌创意网站建设seo数据是什么
  • 做网站外包价格当下最流行的营销方式
  • 政府网站集群建设的好处关键词有哪些
  • 公司网站制作应该注意些什么百度网盘下载的文件在哪
  • 毕设做网站和app百度怎么收录网站
  • 水网站模板网站运营怎么做