历史上的今天
今天是:2025年07月20日(星期日)
2018年07月20日 | Stm32f01x_SysTick定时器_延时功能
2018-07-20 来源:eefocus
最近在看利用SysTick定时器实现延时功能,总结笔记:
1.库函数相关
(1)Systick 部分内容属于NVIC控制部分,一共有4个寄存器(core_cm3.h)
static __INLINE uint32_t SysTick_Config(uint32_t ticks)//ticks为计时间隔,多少个ticks/秒
SysTick->LOAD =ticks&SysTick_LOAD_RELOAD_Msk //设置重载寄存器的值S,ystick是一个递减的定时器,当定时器递减至0时,重载寄存器中的值就会被重装载,继续开始递减。STK_LOAD 重载寄存器是个24位的寄存器最大计数0xFFFFFF
SysTick->VAL=0 //当前值寄存器,是个24位的寄存器,读取时返回当前倒计数的值,写它则使之清零,同时还会清除在SysTick 控制及状态寄存器中的COUNTFLAG 标志
SysTick->CTRL |=0x06//控制寄存器,关闭Systick功能,开启Systick中断,使用HCLK作为Systick时钟
SysTick->CTRL |=0x07//开启Systick功能,开启Systick中断,使用HCLK作为Systick时钟
第0位:ENABLE,Systick 使能位 (0:关闭Systick功能;1:开启Systick功能)
第1位:TICKINT,Systick 中断使能位 (0:关闭Systick中断;1:开启Systick中断)
第2位:CLKSOURCE,Systick时钟源选择 (0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)
第3位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零
(2)SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)//misc.h,选择时钟频率
2
#include
#include
#include
//配置systick 寄存器
void SysTick_Configuration(void)
{
SysTick->VAL = 0;
SysTick->LOAD = (72000000/8000000)*1000;//´ú±íÿ¸ömsÐèÒªµÄ9000¸ösystickʱÖÓÊý
SysTick->CTRL |= 0x06;
}
//中断处理函数
void SysTick_Handler(void) //????
{
extern unsigned long TimingDelay; // ????,?????????
SysTick->VAL = 0;
if (TimingDelay != 0x00)
TimingDelay--;
}
//systick延时函数
unsigned long TimingDelay; //
void Delay(unsigned long nTime) //
{
SysTick->CTRL |=0x07; //
TimingDelay = nTime; //
while(TimingDelay != 0); //
SysTick->CTRL |=0x06;//
}
int main()
{
SystemInit(); //??(??)???
LED_Init();
SysTick_Configuration(); //??systick???
while(1)
{
GPIOA->ODR|=1<<8;
GPIOD->ODR|=1<<2;
Delay(1000); //1S
GPIOA->ODR&=~(1<<8);
GPIOD->ODR&=~(1<<2);
Delay(1000); //1S
}
}
史海拾趣
|
[經典資源分享]各大公司電子類招聘題目精選 類比電路 1、基爾霍夫定理的內容是什麼?(仕蘭微電子) 2、平板電容公式(C=εS/4πkd)。(未知) 3、最基本的如三極管曲線特性。(未知) 4、描述回饋電路的概念,列舉他們的應用。(仕蘭微電子) ...… 查看全部问答> |
|
请问arm的boot代码与bootloader是不是一回事? 1,请问arm的boot代码与bootloader是不是一回事? 2,一般的arm芯片出厂的时候固化有启动代码吗?如果有,为什么还需要用户编写启动程序?… 查看全部问答> |
|
C-Source Code Generated AssemblyMemory Instruction// Enable only 2801 Peripheral Clocksunion PCLKCR0_REG shadowPCLKCR0;EALLOW; 3F82A7 EALLOWshadowPCLKCR0.bit.rsvd1 = 0; 3F82A8 MOV @AL,#0x47D8shadowPCLKCR0.bit.TBCLKSYNC = 0; 3F82AA ...… 查看全部问答> |
|
题目简介:该设计用单片机控制,采用矩阵式输出,使单片机的15根口线控制56路彩灯。本控制器在电路不变的条件下,通过更改软件,能实现各种吧同德花样控制。本控制器可以用在广告灯箱控制,大型广告牌背景灯控制,各种“跑灯”、“流水灯”控制等场 ...… 查看全部问答> |
|
代码是2440开发板的Nand Flash 实验 /*------------------------------------------------------------/ 函数名称: ReadPage 功能描述: 传 参: & ...… 查看全部问答> |
|
本人最近开始学习windows驱动开发。发现太不好学了。 我在网上下了一个hello world程序,编译通过、生成.sys文件。 但不我知道怎么能看到结果呢。 请指教。… 查看全部问答> |




