stm32 如何在一个状态下只触发一次_收藏 | STM32单片机超详细学习汇总资料(一)...

5618e73f843cfabb4e9afa3c9bb041f3.gif

点击“蓝字”关注我们

861d388f5a1a5a077118f94015cb9fdd.png

◆1.SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL。

bbf4aa53995d9da45993c04fceb1f47c.png

◆2.MCO[2:0]可以提供4源不同的时钟同步信号,PA8。

◆3.GPIO口有两个反向串联的二极管用作钳位二极管。

5d582d3aebc96c7ba5e53f4f1d7e2add.png

◆4.ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥。

◆5.在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。

◆6.STM32复位有三种:系统复位、上电复位、备份区域复位。其中系统复位除了RCC_CSR中的复位标志和BKP中的数值不复位之外,其他的所有寄存器全部复位。触发方式例如外部复位、看门狗复位、软件复位等;

电源复位由于外部电源的上电/掉电复位或者待机模式返回。复位除了BKP中的寄存器值不动,其他全部复位;

备份区域复位的触发源为软件复位或者VDD和VBAT全部掉电时。

◆7.(NestedVectored Interrupt Controller)NVIC嵌套向量中断控制器,分为两种:抢先式优先级(可嵌套)和中断优先级(副优先级,不能嵌套)。

两种优先级由4位二进制位决定。分配下来有十六种情况:

757b5520d91292347d69e6a04094d065.png

◆8.自动装载寄存器和影子寄存器:前者相当于51当中的溢出设定数值。而影子寄存器顾名思义是影子,就是寄存器的另一分copy。

实际起作用的是影子寄存器,而程序员操纵的则是自动装载寄存器。如果APPE位使能,表明自动装载寄存器的值在下一次更新事件发生后才写入新值。

否则,写入自动装载寄存器的值会被立即更新到影子寄存器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在STM32F103单片机中使用TIM1触发TIM_TRGO_RESET的示例代码: ``` // 定义TIM1初始化结构体变量 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // 定义TIM1输出比较初始化结构体变量 TIM_OCInitTypeDef TIM_OCInitStructure; // 定义GPIO初始化结构体变量 GPIO_InitTypeDef GPIO_InitStructure; // 使能TIM1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); // 使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 配置GPIOA.8为复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置TIM1基本参数 TIM_TimeBaseStructure.TIM_Period = 999; TIM_TimeBaseStructure.TIM_Prescaler = 71; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // 配置TIM1输出比较参数 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 499; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM1, &TIM_OCInitStructure); // 配置TIM1触发输出 TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Reset); // 启动定时器TIM1 TIM_Cmd(TIM1, ENABLE); ``` 在上述代码中,首先使用`RCC_APB2PeriphClockCmd`函数使能TIM1和GPIOA的时钟。然后,配置GPIOA.8为复用推挽输出,并初始化TIM1的基本参数和输出比较参数。接着,使用`TIM_SelectOutputTrigger`函数配置TIM1的触发输出为TIM_TRGO_RESET。最后,启动TIM1定时器。 需要注意的是,TIM1的输出比较通道1(TIM_OC1)对应的是GPIOA.8引脚。在使用TIM_TRGO_RESET触发时,需要将GPIOA.8设置为复用推挽输出模式。此外,需要根据具体的应用场景和需求,调整TIM1的基本参数和输出比较参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值