配置定时100us的配置如下:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = 1;//59999;//1199;//9999;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_Prescaler=3499;//分频35999
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2,TIM_IT_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, DISABLE);
//((1+TIM_Prescaler )/f_soc)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒
time = ((1+3499)/72M)*(1+1) =100us :f_soc =72MHz
看STM32的时钟树可以知道 Timer的f_soc= APB1_Clk * APB1_Prescaler
APB1_Clk = AHB_Clk /APB1_Prescaler
AHB_CLk = Sysclk /AHB_Prescaler
我这里的时钟设置 Sysclk = 72MHz
AHB_Prescaler = 1 => AHB_Clk = 72MHz
因为 APB1_CLK_max = 36MHz
所以 APB1_Prescaler =2
于是 Timer2 的f_soc = 72MHz
关键字:STM32 TIMER2
引用地址:
STM32 TIMER2的使用
推荐阅读最新更新时间:2024-03-16 15:35
STM32 DMA 应用之(二) DMA 串口 数据传输--发送
一、DMA请求映像 由此我们知道如果需要使用串口1的发送功能需要用到的是DMA1_Channel4 使用串口1的接收功能需要用到的是DMA1_Channel5 二、怎样配置软件来使用DMA 把数据传到串口发送? (1)配置dma /************************************************************************** *函数名称: Dma_Init *功能描述: 利用DMA 把内存的数据传输到串口发送达到高速传输的目的 * *输入参数:无 *返回值 :无 *其他说明:无 *当前版本:v1.0
[单片机]
STM32 OLED显示流程(简略)
前两天刚学了战舰的OLED显示实验,下面是我总结的OLED显示方法: 比如我们想让OLED显示屏显示一个字符串:“CODE”,主函数是这么两条语句: ,(63和48是字符串在屏幕中显示的位置,这里我们不管他。。)这两条语句的拆解步骤如下: 1、既然是显示字符串,我们就得调用字符串显示函数: 2、这个字符串显示函数通过指针*p不断调用字符显示函数: 来显示字符串中的每个字符 3、字符是怎么组成的?由点组成的嘛。。在OLED_ShowChar()函数中又调用画点函数: 把每个字符的点阵全部画完(如1206,1608,2412) 4、每次画一个点不能没地方保存呐。所以我们再STM32的SRAM中开辟的一块128*8字节(128*8*8位
[单片机]
STM32 通用定时器的定时功能 学习笔记
这节主要讲下STM32 通用定时器的定时功能。 一、TIMx的时钟源问题: STM32有8路寄存器,包括TIM1和TIM8两个高级定时器,TIM6和TIM7两个基本定时器,TIM2-TIM5四个通用定时器,定时器是完全独立的,而且没有互相共享任何资源,它们可以一起同步操作,所有TIMx定时器在内部相连,用于定时器同步或链接。当一个定时器处于主模式时,它可以对另一个处于从模式的定时器的计数器进行复位、启动、停止或提供时钟等操作。其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总线上。他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 1)定
[单片机]
STM32系列微控制器标准外设库简单介绍
ST为了普及旗下产品,发布包括标准外设库在内的众多支持软件,有效降低开发门槛。作者使用ST的标准外设库大概两年时间,在这里介绍何为外设库: 外设库,是支持片上外设的函数,数据结构和宏的集合。外设库的精髓在于初始化结构体和初始化函数的配合使用,把外设的各类工作参数赋予初始化结构体,然后调用初始化函数将这些参数写入外设寄存器,完成外设的初始化。 外设库提供大量的状态获取,中断控制等函数,它们进行必要的检查之后,再操作外设,安全高效。 在开发过程中,程序员会频繁地从某个外设接收数据或者向某个外设发送数据,介于此外设库把这些函数全部封装完毕,格式统一,便于使用。 针对初学者,以下几个地方易错: 启动文件和外设头文件里面的MC
[单片机]
STM32之RCC原理
1、时钟源 在 STM32 中,一共有 5 个时钟源,分别是 HSI 、 HSE 、 LSI 、 LSE 、 PLL 。 ①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz ; ②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是 4MHz – 16MHz ; ③LSI 是低速内部时钟, RC 振荡器,频率为 40KHz ; ④LSE 是低速外部时钟,接频率为 32.768KHz 的石英晶体; ⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源, PLL 的输入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍频可选择为 2 – 16 倍,但是其输出频
[单片机]
STM32学习笔记:串口一键下载电路(CH340)的理解
如图:为原子的串口下载电路 在CH340的数据手册上有引脚的介绍以及作用: 这两个引脚:DTR#和RTS#都是 输出类型, MCUISP(一键下载工具),会控制CH340这两个引脚的高低电平状态,通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET. 用万用表测量可知,DTR#、RST#初始状态的时都是高电平,在启用下载的时候,DTR#维持高,RST#拉低,此时两个三极管Q2 和Q3 导通,那么BOOT0 为高电平,RESET为低电平复位,然后DTR#变低,Q2不导通,复位结束,此时BOOT0 为高电平。由启动模式 可知,stm32的启动模式变为从系统存储器启动,启用串口
[单片机]
STM32学习——ADC采集
注意事项 暂时只做了单通道中断方式的采集 1.选择输入引脚时就已经确定了后面ADC的转换通道ADC_Channel 编程步骤 1.初始化ADC用到的GPIO 2.初始化ADC并设置其工作参数 3.设置ADC的时钟(分频因子) 4.设置ADC通道、顺序以及采样时间 5.使能ADC中断,并设置中断方式 6.使能ADC,并校准 7.使用软件触发ADC转换 代码实现 (1)配置GPIO static void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC
[单片机]
深度解析STM32驱动LCD原理
TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。 01驱动流程 使用FSMC驱动LCD 关于FSMC,把数据写入相应的地址,FSMC就会把地址从FSMC_A出去,写入的数据会会从FSMC_D发出去。至于片选等信号线都是自动的。读的话,直接读相应的地址,就会拿到改地址上的数据。 FSMC驱动外部SRAM时,外部SRAM的控制一般有: 地址线(如A0~A25) 数据线(如D0~D15) 写信号(WE,即WR) 读信号(OE,即RD) 片选信号
[单片机]