打印
[STM32F1]

STM32F103通过寄存器实现流水灯

[复制链接]
317|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
幸福小强|  楼主 | 2023-4-27 11:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要使用STM32F103的寄存器实现流水灯,可以按照以下步骤进行:

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

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

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

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

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

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

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

// Enable TIM3 counter
TIM3->CR1 |= TIM_CR1_CEN;

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

使用特权

评论回复
沙发
童雨竹| | 2024-6-11 07:10 | 只看该作者

代码量小的时候用来做条件判断

使用特权

评论回复
板凳
Wordsworth| | 2024-6-11 08:13 | 只看该作者

在直流电流上叠加了一些小的交流电流分量

使用特权

评论回复
地板
Clyde011| | 2024-6-11 09:16 | 只看该作者

连接点是产生控制IC所要检测的小电压的所有器件的公共连接点

使用特权

评论回复
5
公羊子丹| | 2024-6-11 10:09 | 只看该作者

这是个再正常不过的coding习惯

使用特权

评论回复
6
万图| | 2024-6-11 11:12 | 只看该作者

宽度则与电感量和电阻量成反比

使用特权

评论回复
7
Uriah| | 2024-6-11 12:15 | 只看该作者

电流要增大

使用特权

评论回复
8
帛灿灿| | 2024-6-11 14:11 | 只看该作者

有些信号包含丰富的高频分量

使用特权

评论回复
9
Bblythe| | 2024-6-11 15:14 | 只看该作者

交流电流环路的布线要在其他引线之前布好

使用特权

评论回复
10
周半梅| | 2024-6-11 17:10 | 只看该作者

对于优秀程序员来说,这不是好代码

使用特权

评论回复
11
Pulitzer| | 2024-6-11 18:13 | 只看该作者

功率开关或整流环的连接没有直接接到电容的两端

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

124

主题

1543

帖子

2

粉丝