这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STM32学习笔记(Systick)

共12条 1/2 1 2 跳转至

STM32学习笔记(Systick)

高工
2012-11-20 16:01:07     打赏

实验内容:配置嘀嗒定时器,产生0.01毫秒的中断,结合中断函数,使LED灯每隔0.25毫秒闪烁一次。
实验目的:熟悉滴答定时器的配置与应用。简单了解一下STM32的时钟结构。
简单介绍:
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常,Cortex-M3在内核部分 包含了一个简单的定时器——SysTick timer。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要阅读芯片的使用手册来确定选择什么作为时钟源。
在STM32中SysTick 以 HCLK(AHB时钟)或HCLK/8 作为运行时钟。此函数中8分频。
SysTick是一个24位的向下计数定时器。
SysTick_Init() 这个函数,它是由用户在SysTick.c这个文件中实现的,其功能是启动系统滴答定时器SysTick,对嘀嗒定时器进行应用时只需要调用函数SysTick_Config()就可以了,此后SysTick定时器就被开启了。
SysTick_Config()函数,它是属于内核层的Cortex-M3通用函数,位于core_cm3.h文件中。具体配置请参考野火的相关技术文档。
相关代码:
main.c 代码
#include "stm32f10x.h"
#include "gpioledinit.h"
#include "systick.h"

//因为在启动文件中加载了系统时钟配置函数,故此处不再配置时钟
int main(void)
{
Gpio_Led_Init();
SysTick_Init();

while (1);
}
systick.c代码
#include "stm32f10x.h"
unsigned char sys_nub;
void SysTick_Init(void)
{
if (SysTick_Config(90000)) //0.01s 中断一次
{
while (1);
}
}
gpioledinit.c代码
#include "stm32f10x.h"

void Gpio_Led_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);

GPIO_SetBits(GPIOF,GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_9 |GPIO_Pin_10 );

}

STM32F10x_it.c中断处理函数代码
void SysTick_Handler(void)
{
sys_nub++;
if(sys_nub==25)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9); //LED1
}

if(sys_nub>49)
{
sys_nub=0;
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //LED1
}
}




关键词: STM32     学习     笔记     Systick     时钟     Sy    

院士
2012-11-20 18:49:00     打赏
2楼
楼主 怎么又转战来了STM32战场啊~~

我才把LM3S811的开发板给擦干净……还打算和楼主一起学习呢~~

高工
2012-11-20 20:12:16     打赏
3楼
STM32有固件库,用起来就是要顺心一点,不过有时候看EN资料还是晕晕的,特别是意思模糊的时候……

高工
2012-11-20 21:13:54     打赏
4楼
LM3S也有库啊

院士
2012-11-20 21:34:52     打赏
5楼
现在好多家都有了,前些天看LXP系列也有了。
台湾的新唐也有固件库了。
Si lab据说可以直接使用stellaris的固件库。

高工
2012-11-20 23:43:54     打赏
6楼
大势所趋,顺应潮流呗,哈哈哈 等STM32略作了解熟悉之后还会再回去的,毕竟还有很多遗留问题尚未解决啊,还望大仙多多指教啊

高工
2012-11-20 23:47:51     打赏
7楼
LM3S811 也有固件库的,毕竟功能不如STM32 丰富,操作起来也相对的方便一些。 STM32的固件库就太让人头疼了,需要添加的库文件何其繁琐,光一个滴答定时器就耗我不少时间啊。

高工
2012-11-20 23:50:22     打赏
8楼
LM3S的相对简明一些,STM32的看的我一头雾水啊

工程师
2012-11-21 15:02:34     打赏
9楼
0.25ms闪烁一次,怕是看不到闪烁的现象哦

高工
2012-11-21 21:23:36     打赏
10楼
是0.25s闪烁一次

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]