timers-pwm-baremetal
Bare-metal timer and PWM skill. Use when configuring general-purpose timers for PWM, input capture, or periodic ticks without RTOS. Activates on queries about timer prescaler, PWM duty cycle, input capture, or SysTick bare-metal.
How do I install this agent skill?
npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill timers-pwm-baremetalIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill provides educational content and C code snippets for bare-metal microcontroller programming. No security risks or malicious patterns were detected.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Timers and PWM (Bare-Metal)
Purpose
Configure MCU timers for PWM output, input capture, and periodic scheduling: prescaler/ARR setup, compare channels, and SysTick as a simple tick source.
When to Use
- Motor/LED dimming via PWM
- Measuring pulse width (input capture)
- Bare-metal
millis()without FreeRTOS - Hardware periodic sampling trigger
Workflow
1. PWM on TIM2 CH1 (STM32)
f_pwm = f_timer_clk / ((PSC+1) * (ARR+1))
duty = (CCR / (ARR+1)) * 100%
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 83; /* 84MHz / 84 = 1 MHz tick */
TIM2->ARR = 999; /* 1 kHz PWM */
TIM2->CCR1 = 500; /* 50% duty */
TIM2->CCMR1 |= (6U << TIM_CCMR1_OC1M_Pos); /* PWM mode 1 */
TIM2->CCER |= TIM_CCER_CC1E;
TIM2->CR1 |= TIM_CR1_CEN;
GPIO: PA0 AF1 TIM2_CH1.
2. SysTick tick
volatile uint32_t tick_ms;
void SysTick_Handler(void) {
tick_ms++;
}
void systick_init(uint32_t hz) {
SysTick_Config(SystemCoreClock / hz);
}
3. Input capture
Configure channel in CCMR as input, set CCER polarity, read CCR on interrupt when edge captured.
4. Agent usage
/timers-pwm-baremetal 1 kHz 25% duty PWM on TIM2 channel 1
Common Problems
| Symptom | Cause | Fix |
|---|---|---|
| Wrong frequency | APB timer clock doubling | Check RM timer clock x2 rule |
| No PWM output | CCER/CCMR not enabled | Enable channel output |
| Jittery tick | SysTick overridden | One owner for SysTick |
Related Skills
skills/baremetal/gpio-baremetal— timer pin AFskills/embedded/freertos— replace SysTick with RTOS tickskills/baremetal/adc-dac-baremetal— timer TRGO for ADC trigger
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/mohitmishra786/low-level-dev-skills/timers-pwm-baremetal">View timers-pwm-baremetal on skillZs</a>