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

网站关键词全国各地的排名情况上海专业做网站推广的公司

网站关键词全国各地的排名情况,上海专业做网站推广的公司,微信公众号网页怎么制作,wordpress媒体库管理在嵌入式系统中,SysTick_Handler 是一个中断服务例程(Interrupt Service Routine, ISR),用于处理 SysTick 定时器的中断。SysTick 定时器通常用于提供一个周期性的定时中断,可以用来实现延时或者周期性任务。 SysTick…

在嵌入式系统中,SysTick_Handler 是一个中断服务例程(Interrupt Service Routine, ISR),用于处理 SysTick 定时器的中断。SysTick 定时器通常用于提供一个周期性的定时中断,可以用来实现延时或者周期性任务。

SysTick_Handler中断的周期不一定是固定的1毫秒,它的周期取决于你对系统定时器配置的时钟源和计数器 reload 值。系统定时器通常使用微控制器的主时钟(Core Clock)作为时钟源,并且可以设置为任意时钟周期的N倍来决定中断频率。

但在蓝桥杯中,通常我们的时钟树配置都是一样的,时钟主频为80MHz,此时的SysTick_Handler 为每1ms触发一次中断。

利用这个特性,我们可以实现精准延时。

我们可以在stm32g4xx_it.c的最后找到SysTick_Handler 这个函数。在其中加入一些标志位可实现不少定时的功能。

注意:在中断中不能执行耗时过长的程序,中断通常用于处理需要立即响应的事件,如外部信号变化、定时器到期等。如果中断处理时间过长,会延迟对后续中断事件的响应,从而影响系统的实时性能。因此,中断处理程序应该设计得尽可能短小精悍,只执行必要的、时间关键的操作,如状态保存、事件标记、简单计算等。如果有需要执行耗时较长的程序,应该在中断处理程序中设置一个标志位,然后放在主函数的while(1)里执行。

SysTick_Handler中的程序

u8 led_cnt =0;
void SysTick_Handler(void)
{led_cnt++;if(led_cnt>100){//用了简单的逻辑,可以改进led_flag=1;}if(led_cnt>200){led_flag=0;led_cnt=0;}HAL_IncTick();
}

使LED1以0.1s闪烁。

LED.c

#include "led.h"_Bool led_flag=0;
void LED_Control(u8 led_ctrl)
{//先熄灭所有LED灯HAL_GPIO_WritePin(GPIOC,0xff00,GPIO_PIN_SET);		//让PC8~PC15输出高电平,熄灭LEDHAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);	//打开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);	//关闭锁存器//根据led_ctrl来点亮对应的LEDHAL_GPIO_WritePin(GPIOC,led_ctrl<<8,GPIO_PIN_RESET);//根据led_ctrl输出低电平,点亮LEDHAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);	//打开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);	//关闭锁存器
}
u8 led_ctrl=0x00;
void LED_Process(void){if(led_flag==1){led_ctrl |= 0x01;LED_Control(led_ctrl);}else {led_ctrl &= ~0x01;LED_Control(0x00);}
}

LD1-LD8分别对应0xff中从低到高的每一位,十六进制转换为四位二进制后更加清晰:

0xff  ----> 1111 1111 (由高到低依次为 LD8 LD7...LD2 LD1)

想点亮哪个灯只需要将那一位置1,然后换算为16进制即可。 

点亮LED1

led_ctrl |= 0x01;

熄灭LED1

led_ctrl &= ~0x01;

使LED1闪烁

led_ctrl ^= 0x01;//^=是按位异或,可以切换LED的状态,如果是亮则熄灭,如果是熄灭则亮

led.h

#ifndef __LED_H
#define __LED_H
#include "main.h"
extern _Bool led_flag;
void LED_Control(u8 led_ctrl);
void LED_Process(void);
extern u8 led_ctrl;
#endif
while (1){LED_Process();}

将LED_Process()放入while(1)中即可实现led以0.1s闪烁。

QQ视频20240528205900

http://www.yayakq.cn/news/524034/

相关文章:

  • 个人网站能允许做哪些百度站长论坛
  • 旅游网站建设网百度权重是什么
  • 网站开发尾款如何做账酒水在什么网站做推广好
  • 网页制作的软件有哪些seo网站营销推广
  • 网站+建设+拖拉+源码+系统工程预算软件
  • 电商网站开发 文献综述平度网站整站优化外包公司
  • 用网站做自我介绍ppt十大免费ppt网站下载app
  • 一个完整的网站建设广州远洋建设实业公司网站
  • 八亿免费wap自助建站七牛云wordpress缓存配置
  • 网站开发方向 英语翻译河源网站建设公司
  • 网站开发php价格郑州建设最新消息
  • 如何在网站开发国外大客户科技创业创新心得
  • 三否网站众展seo推广
  • 网站logo是什么福建省文明建设办公室网站
  • 网站建设中啥意思室内设计公司排行榜济宁
  • 建设网站主题怎样自己制作手机app软件
  • 网站搜索推广销售百度关键词推广公司哪家好
  • 网站建设的公司选择哪家好广州门户网站制作
  • 网站图片验证码出不来新网站多久被收录
  • 古镇中小企业网站建设怎么推广视频号
  • 文档流程做网站自学it怎么入门
  • 网站建设seo优化公司官网建设报价
  • 华阴市住房和城乡建设局网站搭建商城到底哪家好
  • 建设班级网站网站的数据库怎么备份
  • 专做特产的网站古香古色网站模板
  • 温州正规制作网站公司软件工程师发展前景
  • 上海闸北城市建设有限公司网站wordpress 平铺水印
  • php网站整合dz论坛哪些公司网站建设好
  • 一条龙网站建设哪家专业工作站
  • mixkitcom素材网站flutter 如何做网站