lpc8xx_hal/ctimer/mod.rs
1//! API for the CTIMER peripheral
2//!
3//! Currently, only PWM output functionality is implemented.
4//!
5//! # Example
6//!
7//! ```no_run
8//! use lpc8xx_hal::{
9//! delay::Delay,
10//! prelude::*,
11//! Peripherals,
12//! pac::CorePeripherals,
13//! };
14//!
15//! let cp = CorePeripherals::take().unwrap();
16//! let p = Peripherals::take().unwrap();
17//!
18//! let swm = p.SWM.split();
19//! let mut delay = Delay::new(cp.SYST);
20//! let mut syscon = p.SYSCON.split();
21//!
22//! let mut swm_handle = swm.handle.enable(&mut syscon.handle);
23//!
24//! let pwm_output = p.pins.pio1_2.into_swm_pin();
25//!
26//! let (pwm_output, _) = swm.movable_functions.t0_mat0.assign(
27//! pwm_output,
28//! &mut swm_handle,
29//! );
30//!
31//! // Use 8 bit pwm
32//! let ctimer = p.CTIMER0
33//! .enable(256, 0, &mut syscon.handle)
34//! .attach(pwm_output);
35//!
36//! let mut pwm_pin = ctimer.channels.channel1;
37//! loop {
38//! for i in 0..pwm_pin.get_max_duty() {
39//! delay.delay_ms(4_u8);
40//! pwm_pin.set_duty(i);
41//! }
42//! }
43//! ```
44
45pub mod channel;
46
47mod gen;
48mod peripheral;
49
50pub use self::{
51 channel::Channel,
52 gen::*,
53 peripheral::{Channels1, Channels12, Channels123, CTIMER},
54};