由于Atmle 的ASF换模块十分方便,我就把UART模块去掉加入了TC模块。然后点应用。
再打开ASF EXPROEROR点开定时器模块,里边没有快速指导,不要紧,点开API然后在网页上找EXAMPLES
点开里边有快速指导啦。照着上边的提示做,则形成如下程序:
- #include <asf.h>
- #define PWM_MODULE EXT2_PWM_MODULE
- #define PWM_OUT_PIN EXT2_PWM_0_PIN
- #define PWM_OUT_MUX EXT2_PWM_0_MUX
- struct tc_module tc_instance;
- void configure_tc(void);
- int main (void)
- {
- system_init();
- configure_tc();
-
- while (true) {
- ;
- }
-
- }
- void configure_tc(void)
- {
- struct tc_config config_tc;
- tc_get_config_defaults(&config_tc);
- config_tc.counter_size = TC_COUNTER_SIZE_16BIT;
- config_tc.wave_generation = TC_WAVE_GENERATION_NORMAL_PWM;
- config_tc.counter_16_bit.compare_capture_channel[0] = (0xFFFF / 4);
- config_tc.pwm_channel[0].enabled = true;
- config_tc.pwm_channel[0].pin_out = PWM_OUT_PIN;
- config_tc.pwm_channel[0].pin_mux = PWM_OUT_MUX;
- tc_init(&tc_instance, PWM_MODULE, &config_tc);
- tc_enable(&tc_instance);
- }
到不知道的变量前点右键,则可找到定义的原形。
比如:EXT2_PWM_0_PIN
则可找到它的定义:
究竟是怎么回事,我也看了下数据手册,就是一些位设置,如果自己看不知要到猴年马月才能明白。所以还是ASF吧。
以下是运行的截图:
|