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

北京网站建设模板下载做网络推广

北京网站建设模板下载,做网络推广,wordpress js广告,网站建设与网页设计论文目录 1.时钟选择(这里选择高速外部时钟) ​编辑 2.调试模式和时基源选择: 3.LED的GPIO配置 这里用板子的红灯PB5 4.工程配置 5.1ms的systick中断实现led闪烁 源码: 6.修改systick的中断频率 7.systick定时原理 SysTick 定时器的工作原理 中断触发机制 HAL_SYSTICK_Co…

目录

1.时钟选择(这里选择高速外部时钟)

​编辑

2.调试模式和时基源选择:

3.LED的GPIO配置 这里用板子的红灯PB5

4.工程配置

5.1ms的systick中断实现led闪烁 源码:

6.修改systick的中断频率

7.systick定时原理

SysTick 定时器的工作原理

中断触发机制

HAL_SYSTICK_Config 函数

举个例子


1.时钟选择(这里选择高速外部时钟)

2.调试模式和时基源选择:

这里我用的是SW调试模式,因为只占用两个GPIO,时基源选择systick 系统定时器

3.LED的GPIO配置 这里用板子的红灯PB5

                                                                LED原理图

低电平点亮,配置GPIO

4.工程配置

5.1ms的systick中断实现led闪烁 源码:

在原本生成的代码中修改部分

main.c

  
/* USER CODE BEGIN Includes */
#include "stm32f1xx_it.h"
/* USER CODE END Includes *//* USER CODE BEGIN WHILE */while (1){if(flag==1){HAL_GPIO_TogglePin((GPIO_TypeDef *)GPIOB, (uint16_t) GPIO_PIN_5);flag=0;}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

 stm32f1xx_it.h

/* USER CODE BEGIN Includes */
extern volatile  int systick,flag;
/* USER CODE END Includes */

 stm32f1xx_it.c

/* USER CODE BEGIN Includes */
volatile int systick=0,flag=0;
/* USER CODE END Includes */void SysTick_Handler(void)
{/* USER CODE BEGIN SysTick_IRQn 0 */if(flag==0){systick++;if(systick>1000){flag=1;systick=0;}}/* USER CODE END SysTick_IRQn 0 */HAL_IncTick();/* USER CODE BEGIN SysTick_IRQn 1 *//* USER CODE END SysTick_IRQn 1 */
}

6.修改systick的中断频率

HAL系统默认的systick的中断频率是1kHZ  也就是1ms中断一次

  /* USER CODE BEGIN 2 */// 修改时钟源为 HCLK(8MHz)
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);// 再重新配置重装载值
uint32_t new_load = (8000000 / 1000) - 1; // 1ms中断(7999)
HAL_SYSTICK_Config(new_load);/* USER CODE END 2 */

在while(1)前配置   为1ms中断

7.systick定时原理

SysTick 定时器是一个广泛应用于嵌入式系统中的定时器,常用于周期性中断。它的基本工作原理是基于系统时钟(SystemCoreClock)来生成一个定时周期,并通过计数器进行倒计时,直到计数器的值为零时触发一个中断。

SysTick 定时器的工作原理

  1. 系统时钟(SystemCoreClock

    • SysTick 定时器的计数频率由系统时钟决定。系统时钟频率就是每秒钟系统产生的时钟周期数,也可以理解为每秒系统执行的时钟信号的次数。
  2. 定时器计数器

    • SysTick 是一个 24 位的倒计时计数器,从 ReloadValue 开始倒数。
    • SysTick 的计数器在每次时钟周期减少 1,直到计数器的值减少到 0 为止。
    • 当计数器的值为 0 时,SysTick 会触发一个中断,表示定时周期已到。
  3. 重载值(ReloadValue

    • ReloadValue 定义了定时器倒计时的起始值,它通过公式与系统时钟频率相关。
    • 我们通过设置 ReloadValue 来控制定时器的计数周期,从而设置中断的时间间隔。

    例如,如果我们希望每 1 毫秒触发一次中断,而系统时钟频率为 8 MHz(即 8,000,000 Hz),则需要将 ReloadValue 设置为:

    这表示计数器会从 8000 开始倒数,经过 8000 个时钟周期后触发中断,每个时钟周期为 1 微秒,所以总共时间为 1 毫秒。

  4. 定时器的倒计时与重载

    • 每当计数器倒计时到 0 时,SysTick 会重新加载 ReloadValue(即 8000),然后继续倒计时,形成一个循环。
    • 这一周期性过程确保了每次计数器到 0 时,都会触发一个中断,时间间隔与 SystemCoreClock 和 ReloadValue 密切相关。

中断触发机制

  • 每当 SysTick 定时器的计数器从 ReloadValue 值递减到 0 时,系统会触发一个中断,通知 MCU 进行特定的任务。
  • 这个中断的触发频率与重载值密切相关。例如,设置 ReloadValue 为 8000,且系统时钟为 8 MHz,每经过 8000 个时钟周期就会触发一次中断,时间间隔为 1 毫秒。

HAL_SYSTICK_Config 函数

在 STM32 的 HAL 库中,HAL_SYSTICK_Config 函数用于配置 SysTick 定时器。它的原理如下:

HAL_SYSTICK_Config(SystemCoreClock / 1000);
  • 该函数通过将 SystemCoreClock / 1000 作为重载值设置给 SysTick,意味着系统时钟除以 1000,设置定时器的重载值,使得 SysTick 每经过 1000 微秒(即 1 毫秒)触发一次中断。
  • SystemCoreClock / 1000 的结果就是每 1 毫秒触发一次中断,这使得你可以在中断服务程序中执行特定的任务。

举个例子

假设系统时钟为 8 MHz:

  • 通过 HAL_SYSTICK_Config(SystemCoreClock / 1000),将重载值设置为 8000。
  • 每经过 8000 个时钟周期,SysTick 会触发一个中断。
  • 8000 个时钟周期表示 1 毫秒,触发频率为 1 毫秒一次。

当中断发生时,你可以在中断处理函数中编写需要定时执行的任务,比如采样数据、更新计数器等。

http://www.hkea.cn/news/249915/

相关文章:

  • 绵阳住房和城市建设局网站官网seo排名优化联系13火星软件
  • 网站开发建设费用关键词异地排名查询
  • 网站建设企业电话广州优化疫情防控举措
  • 重庆模板网站建设百度网站域名注册
  • 安徽建设厅网站地址网络广告推广方式
  • 门户网站内容管理建设方案企业关键词优化推荐
  • 北京网站建设公司飞沐小学生一分钟新闻播报
  • 企业网站建设申请域名seo赚钱
  • 2017网站开发前景百度网盘资源链接入口
  • 平面广告设计主题seo是怎么优化上去
  • 正规网站制作公司哪家好四年级写一小段新闻
  • 济南网站建设安卓版快手seo
  • java开发兼职网站开发线上推广平台
  • 北京网站建设开发公司网站自动收录
  • wordpress最多多少用户seo基础知识
  • 湘潭做网站 去磐石网络b站推出的短视频app哪个好
  • 宿迁做网站的公司有人看片吗免费观看视频
  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司
  • 传播型网站建设优势有哪些推广类软文
  • 如何在百度做网站推广赚钱的软件
  • c# 网站开发教程周口网站seo
  • 湘西网站建设帮人推广注册app的平台
  • 切图做网站web制作网站的模板
  • 网站的做网站公司哪家好网络优化大师app
  • 国内外包网站今日头条(官方版本)
  • 外网建筑设计网站线上渠道推广有哪些方式
  • 厦门做网站公司排名电工培训机构
  • 武汉网站设计制作外包公司的人好跳槽吗
  • 网站建设哪里最好页面关键词优化