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

网站推广的定义及方法网站域名的意思

网站推广的定义及方法,网站域名的意思,seo关于网站搜索,seo的目的是什么5.1 定时器与计数器简介 定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器#xff08;计数器值#xff09;。如果系统时钟为 1 MHz#xff0c;定时器每 1 μs 计数一次。 计数器是一种对外部事件#xff08;如脉冲信号#xff…5.1 定时器与计数器简介 定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器计数器值。如果系统时钟为 1 MHz定时器每 1 μs 计数一次。 计数器是一种对外部事件如脉冲信号进行计数的模块而不是基于固定时钟。外部引脚每收到一个脉冲如按键按下或传感器触发计数值加 1 或减 1。 LPC1100系列Cortex-M0微控制器有2个32位和2个16位可编程定时器/计数器都有捕获和匹配输出的功能。 捕获捕获功能用于记录外部信号变化时定时器的当前值常用于测量信号的频率、脉宽或相位差。当外部信号如引脚电平变化触发捕获事件时定时器的当前值会被自动保存到捕获寄存器。 匹配输出定时器的一种功能当定时器的计数值达到预设的匹配值Match Value时自动触发特定动作如翻转引脚电平、产生中断等。用户预先设置一个匹配值当定时器计数值等于该值时硬件会自动执行操作无需 CPU 干预。 5.2 定时器工作流程 对于定时器先设置预分频计数器的计数上限预分频计数器每计满一次定时器就加一定时器达到匹配就可触发相应事件。 设置 PR 分频值的值如 PR 99PC 从 0 开始计数。每来一个输入时钟脉冲PC 加 1。当 PC PR 时PC 清零并输出一个脉冲给定时器的主计数器。每接收到一个来自预分频器的脉冲定时器的主计数器TC加 1。 5.3 定时器/计数器寄存器          有四种定时器 TMR32B0、TMR32B1、TMR16B0 TMR16B1 功能类似就计的总数32位、16位的区别 5.3.1 定时器中断寄存器 TMR32/16BnIR 包含4个匹配中断和一个捕获中断标志位有中断相应位置位变成1没中断变0写1可以清零中断写零无效。 位对应名0 MR0中断 中断标志1MR1中断2MR2中断3MR3中断4 CAP0中断 31:5保留 5.3.2 定时器控制寄存器 TMR32/16BnTCR 位功能0 1使能0禁能 1         写1定时器/计数器和分频在PCLK下一个上升沿复位         复位状态直到该位重新写0才会改变 312保留 5.3.3 定时器/计数器当前计数值 TMR32/16BnTC 预分频计数器计数到上限时TC计数值加一TC到上限没复位则32位会计数到0xFFFFFFFF然后翻转到0x00000000没中断啥的一些情况然后继续去计数了。 5.3.4 预分频寄存器 TMR32/16BnPR 指定预分频计数器的最大计数值 PR为0每1个PCLK48MHz时钟一个周期TC计数加一 PR为1每2个PCLKTC计数加一 5.3.5 预分频计数器 TMR32/16BnPC 对输入时钟脉冲进行计数的计数值不用理会 5.3.6 匹配控制寄存器 TMR32/16BnMCR 位功能 1 产生对应效果 0 无该特性 0 MR0匹配时产生中断1MR0匹配时复位TC2MR0匹配时TC和PC计数都停止 TCR[0]置0定时器禁能了3MR1匹配时产生中断4MR1匹配时复位TC5MR1匹配时TC和PC计数都停止 TCR[0]置0定时器禁能了6MR2匹配时产生中断7MR2匹配时复位TC8MR2匹配时TC和PC计数都停止 TCR[0]置0定时器禁能了9MR3匹配时产生中断10MR3匹配时复位TC11MR3匹配时TC和PC计数都停止 TCR[0]置0定时器禁能了3112保留 5.3.7 匹配寄存器 TMR32/16BnMR0/1/2/3 自动与TC值相比较的相等触发对应效果不用理会 5.3.8 捕获寄存器 TMR32/16BnCCR 位功能 1 产生对应效果 0 无该特性 0 CAP0上升沿捕获使TC内容装入CR01CAP0下降沿捕获使TC内容装入CR02CAP0事件导致的装载产生中断313保留 5.3.9 捕获寄存器 TMR32/16BnCR0 引脚发生特定事件时存储TC内容只读 5.3.10 外部匹配寄存器 TMR32/16BnEMR 位功能0 EM0外部匹配0输出MAT0的状态 即TC与MR0匹配时的输出 1EM1外部匹配1输出MAT1的状态2EM2外部匹配0输出MAT2的状态3EM3外部匹配0输出MAT3的状态54 EMC0 00 无操作 01 输出低电平0 10 输出高电平1 11 输出电平翻转 76EMC1  以下同EMC098EMC21011EMC31512保留 5.3.11 计数控制寄存器 TMR32/16BnCTCR 用于定时器与计数器模式之间的选择 位值描述1000定时器模式TC在PCLK上升沿计数01计数器模式TC在选择的CAP输入的上升沿递增10计数器模式TC在选择的CAP输入的下降沿递增11计数器模式TC在选择的CAP输入的双边沿递增3200CAP0引脚其他保留貌似条件有限没有其他CAP引脚所以上边选择也是就选择CAP0314保留 5.3.12 PWM控制寄存器 TMR32/16BnPWMC 用于将匹配的输出设置为PWM输出 大致可整两个匹配分别控制占空比和周期 一个匹配寄存器调占空比出现匹配时PWM输出置为高电平匹配前是低电平 一个匹配作为PWM周期匹配时复位高电平清零 具体小细节见书P136页。 位功能0 1 MAT0的PWM模式使能 0 MAT0受EM0控制 1 1 MAT1的PWM模式使能 0 MAT1受EM1控制 2 1 MAT2的PWM模式使能 0 MAT2受EM2控制 3 1 MAT3的PWM模式使能 0 MAT3受EM3控制 324保留 5.4 呼吸灯 目标 1利用16位定时器1实现定时1s控制LPC1114微控制器的GPIO引脚PIO1_9状态反转可以用中断方式也可以用匹配输出功能此时LED灯Blinky闪烁频率为0.5Hz 2设置16位定时器1工作在PWM模式PIO1_9设置为PWM输出引脚利用另外一个定时器定时(例如32位定时器0设置每隔0.01s或者更小)增大或者减小16位定时器1输出PWM的占空比占空比改变的步长与32位定时器0的定时时间相配合确定呼吸频率实现PIO1_9上的LED灯渐亮渐灭的呼吸灯效果。 思路 主要是两部分内容第一部分直接SysTick也能实现但是使用定时器就是要熟悉一下定时器怎么用第二部分就是定时器的PWM占空比不断升高降低这个是使用两个定时器一个定时器实现翻转另一个定时器实现改变第一个定时器的占空比按时间依次增加或者减小即可。 这两部分内容可以直接使用按键切换相当于两种模式即闪烁模式和PWM呼吸灯模式将上章写的Button中断改一下就行了 Button.c #include Button.h #include TIMER.h int flag1 0, flag2 0; // 判断botton 和 wakeup 按键上一次状态//延时ms函数 // 太粗糙了而且要根据机器指令与时钟周期关系调整也就防抖延时用一下 __inline void delay_ms(uint32_t a) //约1ms延时函数 { uint32_t i;while( a -- ! 0){for(i 0; i5500; i);} }void WAKEUP_Init(void) {LPC_SYSCON - SYSAHBCLKCTRL | (1UL 6) | (1UL 16); // 使能GPIO时钟和IO时钟// PIO1_4LPC_IOCON-PIO1_4 ~(0x1F); // 清除之前的配置LPC_IOCON-PIO1_4 | 0x00; // 配置为GPIO功能LPC_GPIO1-DIR ~(1UL 4);// 设置GPIO方向为输入LPC_GPIO1-IS ~(0x1 4); // 清除第 4 位设置为边沿触发LPC_GPIO1-IBE ~(0x1 4); // 清除第 4 位设置为单边沿触发LPC_GPIO1-IEV ~(0x1 4); // 清除第 4 位设置为低电平触发LPC_GPIO1 - IE | (0x14); // 使能端口中断LPC_IOCON-PIO1_4 | (1UL 5); // 使能滞后模式LPC_GPIO1-IC | (1UL 4); // 清除中断标志位NVIC_EnableIRQ(EINT1_IRQn); // 使能GPIO1中断 }void Button_Init(void) {LPC_SYSCON - SYSAHBCLKCTRL | (1UL 6) | (1UL 16); // 使能GPIO时钟和IO时钟// PIO3_5LPC_IOCON-PIO3_5 ~(0x1F); // 清除之前的配置LPC_IOCON-PIO3_5 | 0x00; // 配置为GPIO功能LPC_GPIO3-DIR ~(1UL 5);// 设置GPIO方向为输入LPC_GPIO3-IS ~(0x1 5); // 清除第 5 位设置为边沿触发LPC_GPIO3-IBE ~(0x1 5); // 清除第 5 位设置为单边沿触发LPC_GPIO3-IEV ~(0x1 5); // 清除第 5 位设置为低电平触发LPC_GPIO3 - IE | (0x15); // 使能端口中断LPC_IOCON-PIO3_5 | (1UL 5); // 使能滞后模式LPC_GPIO3-IC | (1UL 5); //清除中断标志NVIC_EnableIRQ(EINT3_IRQn); }// GPIO3_5的中断服务函数处理BUTTON按键按下事件 void PIOINT3_IRQHandler(void) {if((LPC_GPIO3-MIS (1UL 5)) (1UL 5))// 检查是否是PIO3_5的中断{ delay_ms(20); // 消抖while((LPC_GPIO3-DATA (1UL 5)) 0);delay_ms(20);LPC_TMR16B1-PWMC ^ 1; //PWM状态翻转if(LPC_TMR16B1-PWMC 0x01) // 如果要进PWM 模式{NVIC_EnableIRQ(TIMER_32_0_IRQn);//使能32位定时器中断TMR16B1_PWM_Mode(); }else // 如果要进闪烁灯模式{NVIC_DisableIRQ(TIMER_32_0_IRQn);//禁32位定时器中断TMR16B1_Blinky_Mode();}LPC_GPIO3-IC | (1UL 5); // 清除中断标志} } // GPIO1_4的中断服务函数处理WAKEUP按键按下事件 void PIOINT1_IRQHandler(void) {if((LPC_GPIO1-MIS (1UL 4)) (1UL 4)) // 检查是否是PIO1_4的中断{delay_ms(20);while((LPC_GPIO1-DATA (1UL 4)) 0);delay_ms(20);LPC_GPIO1-IC | (1UL 4); // 清除中断标志} }TIMER.c #include TIMER.hint flag 1; // 递增递减标志 1递增 -1递减void TMR32B0_Init(void)//32位定时器0初始化 设置中断时间 MR0/SystemCoreClock *(PR 1) 0.01s {LPC_SYSCON-SYSAHBCLKCTRL | (1UL 9);//使能32位定时器0的时钟LPC_TMR32B0-IR 0x1F;//清除所有中断标志位LPC_TMR32B0-PR 0;//设置分频系数LPC_TMR32B0-MCR 3;//设置MR0匹配后复位TC并产生中断LPC_TMR32B0-MR0 SystemCoreClock / 100 ; // 计数值LPC_TMR32B0-TCR 0x01;//启动定时器NVIC_DisableIRQ(TIMER_32_0_IRQn);//开中断 }void TMR16B1_Init(void) {LPC_SYSCON-SYSAHBCLKCTRL | (1UL 8) | (1UL 16); // 16位定时器1时钟使能 | IO配置块时钟使能LPC_IOCON-PIO1_9 | 0x01; // MAT0匹配IO1_9 }void TMR16B1_PWM_Mode(void)// PWM呼吸灯模式 1s 占空比0 - 1 or 1 - 0 {LPC_TMR16B1-TCR 0x02;//定时器复位LPC_TMR16B1-PR 99; // 分频系数LPC_TMR16B1-PWMC 0x01;//设置MAT0为PWM输出LPC_TMR16B1-MCR 0x02 9; //设置MR3匹配后复位TCLPC_TMR16B1-MR3 SystemCoreClock / 10000; // PWM周期设置为0.01s设置中断时间LPC_TMR16B1-MR0 LPC_TMR16B1-MR3 / 100;//MAT0初始化输出亮度1%LPC_TMR16B1-TCR 0x01; // 启动定时器 }// 匹配输出翻转 void TMR16B1_Blinky_Mode(void) // 闪烁灯模式 1s翻转一次 { LPC_TMR16B1-TCR 0x02;//定时器复位LPC_TMR16B1-PR 999; // 分频系数LPC_TMR16B1-MCR 2; // 设置MR0匹配后复位TC不产生中断LPC_TMR16B1-MR0 SystemCoreClock / 1000; // 定时1sLPC_TMR16B1-PWMC 0x00;//设置MAT0不为PWM输出LPC_TMR16B1-EMR | (3UL 4);// MAT0外部匹配翻转LPC_TMR16B1-TCR 0x01; //定时器启动 }void TIMER32_0_IRQHandler(void)//32位定时器0中断子程序 {static int duty 0;if(LPC_TMR32B0-IR 0x01)//判断是否MR0中断{LPC_TMR32B0-IR 0x01; // 清除第一中断标志位duty 1 * flag; // 更新占空比if(duty 100) {flag -flag; // 递减 渐灭duty 100; // 防止越界}if(duty 0) {flag -flag; // 递增 渐亮duty 1; // 防止越界}LPC_TMR16B1-MR0 (uint32_t)(LPC_TMR16B1-MR3 * duty /100); // 设置占空比} }TIMER.h #ifndef _TIMER_H_ #define _TIMER_H_#include LPC11xx.hvoid TMR32B0_Init(void); void TMR16B1_Init(void); void TMR16B1_PWM_Mode(void); void TMR16B1_Blinky_Mode(void);#endifmain.c #include LPC11xx.h #include LED.h #include Button.h #include TIMER.hint main(void) {Button_Init(); // Button初始化TMR16B1_Init(); //初始化16位B1定时器TMR32B0_Init(); // 初始化32位B0定时器TMR16B1_Blinky_Mode(); // 初始闪烁灯模式while (1){} }实验效果就是烧录后按下复位键Blinky开始闪烁按下Button是PWM之后再按就会在两种模式之间切换。
http://www.hkea.cn/news/14306358/

相关文章:

  • 视频网站中滑动列表怎么做的2345网址导航app下载2021
  • 效果图制作网站有哪些户户通行业网站
  • 四川西充县建设局网站专业微信网站建设报价
  • pr效果做的好的网站有哪些泉州建站模板网站
  • 即墨哪里有做网站的电子产品网页设计模板
  • 网站建设网络推广平台网站设计作用
  • 卷帘门怎么做网站抖音推广seo
  • 建设心理网站大华伟业网站建设
  • 网站建设需要使用哪些设备四川电商推广公司
  • 杭州营销网站制作建设彩票网站犯法吗
  • 精美手机网站模板网址大全100个
  • 武威网站制作公司服务电话建设网站方式有哪些
  • 搭建网站建设在手机上建网站
  • 广州建设技术职业学院是公办吗山东企业站点seo
  • 网站备案照片 多少钱郑州优化网站推广
  • 旅游景区网站建设方案文档四川网站建设 招标
  • 做网站和优化公司的宣传语3e网站建设
  • 企业网站开发视频短视频seo排名系统
  • 个旧网站建设公司网站备案承诺书怎么写
  • 电商网站建设与运营方向就业前景app营销
  • 扬州建设信息网站专业网站设计师去哪找
  • 博兴县建设局网站太原企业网站搭建
  • 商场网站方案合肥重点工程建设局
  • 英国T4学生签证 可以做网站吗江苏网站建设多少钱
  • 惠州手机模板建站南京seo排名收费
  • 手机网站用什么制作穆棱seo
  • 网站后台管理系统界面动易网站管理
  • 网站目标规划营销型网站建设运营
  • 永久免费自助建站wordpress的主题上传了没有显示
  • 石家庄手机网站建设公司wordpress图文调用