void
SYSTICK_Init(void)
{
/* SysTick end of count event each 1ms with input clock equal to 4.5MHz (HCLK/8, default)
SysTick_SetReload(4500);
/* Enable SysTick interrupt
SysTick_ITConfig(ENABLE);
/* Enable the SysTick Counter
SysTick_CounterCmd(SysTick_Counter_Enable);
}
系统时钟定时器的周期与驱动的时钟频率和Reload值相关。
RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。
驱动系统时钟定时器的时钟源有两个:HCLK或(HCLK/8默认),通过调用SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK)或SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8)选择。
Reload值表示对时钟源脉冲计数多少次为一个系统时钟周期,如当选择时钟源为(HCLK/8)时,如果HCLK=72MHz,则Reload值为9000时系统时钟周期为1ms。通过调用SysTick_SetReload()设置Reload值。
再举个例子:选择时钟源为(HCLK/8),如果HCLK=36MHz,Reload值为9000时系统时钟周期为2ms,Reload值为4500时系统时钟周期为1ms,Reload值为90000时系统时钟周期为20ms。
关键字:STM32 SYSTICK_Init
引用地址:
STM32的SYSTICK_Init()配置
推荐阅读最新更新时间:2024-03-16 14:33
STM32定时器的研究
一直想写个什么计数方面的文章,但是自己的水平有限,一直写不出来,但是这个还是凑合着写吧!!!以前也看过STM32的定时器的,但是感觉还是在一个很模糊的状态,这次就当是自己学习写技术文章的个写作。 一、对于STM32中断优先级的概念的理解 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作 亚优先级 或 副优先级 ,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行 抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先
[单片机]
【STM32】HAL库-ADC
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 ADC的输入时钟不得超过14MHz ADC开关控制 通过设置ADC_CR2寄存器的ADON位可给ADC上电。当第一次设置ADON位时,它将ADC从断电状态下唤醒。 ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。 tSTAB可查询数据手册 一般来说是1us 通过清除ADON位可以停止转换,并将ADC置
[单片机]
STM32串口DMA连续发送两帧,导致数据部分覆盖的问题
问题描述 使用STM32的串口进行DMA发送(Noraml模式),在某个任务中连续调用两次发送函数log_printf(),但是发回的数据在串口调试助手上显示与预期不符。第一次发送的数据有一部分被第二次发送的数据覆盖,如图所示: 任务代码如下: /* Log_Task function */ void Log_Task(void const * argument) { /* USER CODE BEGIN Log_Task */ /* Infinite loop */ for(;;) { if(router_rx_flag == 1) { router_rx_flag = 0;
[单片机]
STM32HAL库ADC实验(二)——连续采样模式打印电压值
int main(void) { /* USER CODE BEGIN 1 */ uint16_t adcData; float voltage; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /*
[单片机]
TCRT5000+STM32红外循迹小车程序
用正点原子的精英版作为主控,红外循迹用TCRT5000芯片。 单片机源程序如下: /* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include stm32f10x_tim.h #include stm32f10x_flash.h #include stm32f10x_exti.h #include stm32f10x_rcc.h #include systick.h #include stdio.h #include misc.h #define in
[单片机]
STM32 PWM周期与频率的计算
STM32 PWM周期与频率的计算 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARR 自动重装器的值 TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;
[单片机]
关于STM32 ADC_速度问题
STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。 STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。 根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。 要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和
[单片机]
STM32片上外设时钟使能、失能和复位的区别
1 RCC时钟说明 在STM32参考手册中,都有Reset and Clock Control(RCC)复位和时钟控制的章节。 在这一章节就可以看到有两类寄存器:peripheral reset register(RSTR)外设复位寄存器和peripheral clock enable register(ENR)外设时钟使能寄存器。 我们拿STM32F1参考手册为例,可以看到如下图寄存器: 一种是控制外设时钟的寄存器,一种是复位外设的寄存器。 2 外设时钟使能和失能 我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。 比如使能USART1时钟: RCC_APB2PeriphC
[单片机]