Nucleo-F411RE (STM32F411)LL库体验 3 - 滴嗒定时器的配置

news/2025/1/18 0:33:40/

Nucleo-F411RE (STM32F411)LL库体验 3 - 滴嗒定时器的配置

1、LL库延时

LL库初始化时钟的时候调用了LL_Init1msTick(100000000)函数,这个函数其实就是初始化了系统的滴答定时器。
LL_InitTick原型如下:
在这里插入图片描述
在这里插入图片描述
load值 = sysclk/1000,即计时1ms需要120000个数。
CTRL clksource = 1,不分频,systick的频率为120M。

2、添加自己的延时函数

注释掉 LL_Init1msTick函数,初始化滴答定时器为中断模式,设置load = 120000,即1ms进入中断函数一次。

#include "systick.h"
#include "main.h"volatile static uint32_t delay;uint32_t BOARD_Systick_Init(uint32_t ticks)
{ if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */SysTick->CTRL  |= SysTick_CTRL_TICKINT_Msk;return (0);                                                  /* Function successful */
}void BOARD_Delay1Ms(uint32_t count)
{delay = count;while(0U != delay){}
}void BOARD_Delay_Decrement(void)
{if (0U != delay){delay--;}
}

中断处理函数:
在这里插入图片描述
在初始化时钟的地方初始化滴答定时器。
在这里插入图片描述
调用延时函数:
在这里插入图片描述

3、软件延时函数

比如时钟为100M,延时1us需要100个__NOP();
那么可以简单写延时函数如下:

/* Software delay millisecond. */
void APP_SoftwareDelay_Ms(uint32_t ms)
{for (uint32_t i = 0u; i < ms; i++){for (uint32_t j = 0u; j < (SystemCoreClock / 1000u); j++){__NOP();}}
}void APP_SoftwareDelay_Us(uint32_t us)
{for (uint32_t j = 0u; j < (SystemCoreClock / 1000000u); j++){__NOP();} 
}

4、代码

代码下载


http://www.ppmy.cn/news/405832.html

相关文章

字符设备驱动内部实现

只要文件存在&#xff0c;就会有唯一对应的inode号&#xff0c;且相应的会存在一个struct inode结构体.,在应用层通过open&#xff08;&#xff09;打开一个设备文件&#xff0c;会对应产生一个inode号&#xff0c;通过inode号可以找到文件的inode结构体&#xff0c;inode结构体…

【linux网络配置】多个网卡一起使用,一个网卡连内网,一个网卡连外网

一、问题背景 因为有一个工作站在内网中&#xff0c;但是没有办法联网&#xff08;校园网账户有限&#xff09;。 虽然工作站没有联网&#xff0c;但是我仍然可以通过局域网远程控制工作站&#xff0c;使其访问校园网验证页面实现上网。 当给工作站安装软件或依赖项时&#…

Python Virtualenv:隔离和管理Python项目的利器

引言: 为什么要用虚拟环境 我看到很多python的初学者同学&#xff0c;使用最新版的pycharm&#xff0c;新建一个工程时候默认就是venu虚拟环境。 然后在使用cmd里面pip安装第三方包的时候&#xff0c;在工程里面死活导入不成功&#xff0c;搞的开始怀疑人生。&#xff08;你给…

百度飞浆行人多目标跟踪笔记

开源地址&#xff1a; PaddleDetection/configs/mot at release/2.3 PaddlePaddle/PaddleDetection GitHub 百度飞浆集成了多目标跟踪的多种算法&#xff0c;地址&#xff1a; PaddleDetection/configs/mot at release/2.3 PaddlePaddle/PaddleDetection GitHub deepsor…

调用百度AI实现人像分割(上)

百度AI申请应用&#xff0c;获取 APP_ID API_KEY SECRET_KEY。 开始扣图&#xff1a; # -*- coding:utf-8 -*- import cv2 import base64 import numpy as np import os from aip import AipBodyAnalysis import time import randomAPP_ID 25365416 API_KEY pS5cVzzw2i…

百度IM内测:提供内测版下载地址

秘密研发历时一年&#xff0c;无耻的百度终于承认其在开发IM&#xff0c;于今日开始内测。 内测版下载地址&#xff1a;http://down2.beareyes.com.cn/temp/BaiduHi_1.0_Beta1.exe 。此地址非网易地址。网易地址提供的下载貌似是病毒&#xff0c;我在那儿下了&#xff0c;不到…

百度人像分割API

配置API的视频教程在这里。建议看视频&#xff0c;视频里的很详细。 视频教程 百度Ai平台链接 这是最后的代码 代码和教程的代码一样 import requests import base64import cv2 import numpy as np import base64from PIL import Image人像分割file_path F:/630/images/test/…

计算机考研408真题百度云,2021计算机408考研计算机网络百度云+408历年真题

原标题:2021计算机408考研计算机网络百度云+408历年真题 2021计算机408考研天勤王道计算机网络百度云 2021计算机408考研天勤王道计算机网络百度云 2021计算机408考研天勤王道百度云 材料链接: https://shimo.im/docs/PCrHwQqK6tyKVWTw/ 祝咱们考研顺畅! 更多材料见大众号:…