[STM32F1] STM32F103通过寄存器实现流水灯

[复制链接]
646|10
 楼主| 幸福小强 发表于 2023-4-27 11:53 | 显示全部楼层 |阅读模式
要使用STM32F103的寄存器实现流水灯,可以按照以下步骤进行:

配置引脚
首先,需要将LED连接到微控制器的引脚上,并将该引脚配置为GPIO输出模式。在STM32F103上,可以使用RCC寄存器来配置引脚的时钟,使用GPIO寄存器来配置引脚的模式和速度,例如:
  1. // Enable GPIOC clock
  2. RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;

  3. // Configure PC13 as output, 50 MHz speed
  4. GPIOC->CRH |= GPIO_CRH_MODE13_1 | GPIO_CRH_MODE13_0;
上述代码将PC13引脚配置为GPIO输出模式,时钟频率为50MHz。

设置定时器
接下来,需要使用STM32F103的定时器来产生流水灯效果。在这里,可以使用定时器的输出比较模式(Output Compare mode)和中断来实现。具体来说,可以设置定时器的预分频器和重载值,使其产生一定的定时周期,然后将输出比较寄存器设置为产生一定的占空比和计数周期,以产生PWM信号。在定时器中断服务程序中,可以更改输出比较寄存器的值,以便在每个定时周期中更新LED状态。

例如,以下代码使用TIM3定时器和通道1产生1秒钟的定时周期,并通过输出比较模式和中断实现LED的流水灯效果:
  1. // Enable TIM3 clock
  2. RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;

  3. // Configure TIM3 to generate a 1-second period
  4. TIM3->PSC = 7199;   // Prescaler
  5. TIM3->ARR = 999;    // Auto-reload value

  6. // Configure TIM3 Channel 1 to generate PWM signal
  7. TIM3->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // PWM mode 1
  8. TIM3->CCER |= TIM_CCER_CC1E;                        // Enable channel 1 output
  9. TIM3->CCR1 = 500;                                  // Duty cycle

  10. // Enable TIM3 update interrupt
  11. TIM3->DIER |= TIM_DIER_UIE;

  12. // Enable TIM3 counter
  13. TIM3->CR1 |= TIM_CR1_CEN;

  14. // TIM3 update interrupt handler
  15. void TIM3_IRQHandler(void) {
  16.   if (TIM3->SR & TIM_SR_UIF) {
  17.     static uint32_t led_state = 0;
  18.     led_state = (led_state + 1) % 8;
  19.     GPIOC->BSRR = (uint32_t)(0x00004000U << led_state) | (uint32_t)(0x40000000U >> (7 - led_state));
  20.     TIM3->SR &= ~TIM_SR_UIF;
  21.   }
  22. }
上述代码使用PC0~PC7引脚连接LED,以产生流水灯效果。在每个定时周期中,定时器中断服务程序将更新LED状态,从而产生流水灯效

童雨竹 发表于 2024-6-11 07:10 | 显示全部楼层

代码量小的时候用来做条件判断
Wordsworth 发表于 2024-6-11 08:13 | 显示全部楼层

在直流电流上叠加了一些小的交流电流分量
Clyde011 发表于 2024-6-11 09:16 | 显示全部楼层

连接点是产生控制IC所要检测的小电压的所有器件的公共连接点
公羊子丹 发表于 2024-6-11 10:09 | 显示全部楼层

这是个再正常不过的coding习惯
万图 发表于 2024-6-11 11:12 | 显示全部楼层

宽度则与电感量和电阻量成反比
Uriah 发表于 2024-6-11 12:15 | 显示全部楼层

电流要增大
帛灿灿 发表于 2024-6-11 14:11 | 显示全部楼层

有些信号包含丰富的高频分量
Bblythe 发表于 2024-6-11 15:14 | 显示全部楼层

交流电流环路的布线要在其他引线之前布好
周半梅 发表于 2024-6-11 17:10 | 显示全部楼层

对于优秀程序员来说,这不是好代码
Pulitzer 发表于 2024-6-11 18:13 | 显示全部楼层

功率开关或整流环的连接没有直接接到电容的两端
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

1720

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部