由于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吧。
以下是运行的截图:
|