没有合适的资源?快使用搜索试试~ 我知道了~
STM32SYSTEM文件夹.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 149 浏览量
2023-06-06
20:59:43
上传
评论
收藏 79KB DOC 举报
温馨提示
试读
26页
STM32SYSTEM文件夹.doc
资源推荐
资源详情
资源评论
SYSTEM 文件夹介绍
1.delay 文件夹
1.1 delay.c 文件
源码如下:
#include <stm32f10x_lib.h>
#include "delay.h"
static u8 fac_us=0;//us 延时倍乘数
static u16 fac_ms=0;//ms 延时倍乘数
//初始化延迟函数
//SYSTICK 的时钟固定为 HCLK 时钟的 1/8
//SYSCLK:系统时钟
void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2 清 空 , 选 择 外 部 时 钟
HCLK/8
fac_us=SYSCLK/8;
fac_ms=(u16)fac_us*1000;
}
//延时 nms
//注意 nms 的范围
//SysTick->LOAD 为 24 位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK 单位为 Hz,nms 单位为 ms
//对 72M 条件下,nms<=1864
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;// 时 间 加 载
(SysTick->LOAD 为 24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
//延时 nus
//nus 为要延时的 us 数.
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
函数功能及调用:
1>.delay_init();
SYSTICK 时钟初始化,形参为系统时钟(72M)。
2>.delay_ms(u16 nms);
1 毫秒延时,形参为延时毫秒数。
3>.delay_us(u32 nus);
1 微秒延时,形参为延时微秒数。
:形参不要超过 1800。
1.2delay.h 文件
源码如下:
#ifndef __DELAY_H
#define __DELAY_H
#include <stm32f10x_lib.h>
void delay_init(u8 SYSCLK);
void delay_ms(u16 nms);
void delay_us(u32 nus);
#endif
剩余25页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功