ATSAMC21 PWM占空比卡在99%。
创始人
2024-09-21 21:01:33
0

要设置ATSAMC21的PWM占空比为99%,可以使用Atmel START配置工具和ASF(Atmel Software Framework)来实现。以下是一个示例代码,通过使用ASF库函数来设置PWM占空比为99%。

#include 

#define PWM_MODULE      TC3
#define PWM_CHANNEL     0
#define PWM_FREQUENCY  10000
#define PWM_DUTY_CYCLE 99

int main(void)
{
    /* 初始化系统 */
    system_init();
    
    /* 配置PWM引脚 */
    struct system_pinmux_config pinmux_config = {
        .mux_position = MUX_PA18E_TC3_WO0,
        .direction    = SYSTEM_PINMUX_PIN_DIR_OUTPUT,
        .input_pull   = SYSTEM_PINMUX_PIN_PULL_NONE,
        .powersave    = false
    };
    system_pinmux_pin_set_config(PIN_PA18E_TC3_WO0, &pinmux_config);
    
    /* 配置PWM模块 */
    struct tc_config config_tc;
    tc_get_config_defaults(&config_tc);
    config_tc.counter_size = TC_COUNTER_SIZE_16BIT;
    config_tc.counter_16_bit.compare_capture_channel[0] = PWM_DUTY_CYCLE * (65535 / 100);
    config_tc.counter_16_bit.wave_generation = TC_WAVE_GENERATION_MATCH_FREQ;
    config_tc.counter_16_bit.waveform_invert_output = TC_WAVEFORM_INVERT_OUTPUT_CHANNEL_0;
    config_tc.counter_16_bit.pwm_channel[0].enabled = true;
    config_tc.counter_16_bit.pwm_channel[0].pin_out = PIN_PA18E_TC3_WO0;
    config_tc.counter_16_bit.pwm_channel[0].pin_mux = PINMUX_PA18E_TC3_WO0;
    tc_init(&PWM_MODULE, PWM_CHANNEL, &config_tc);
    
    /* 启动PWM */
    tc_enable(&PWM_MODULE);
    
    while (1) {
        /* 无限循环 */
    }
}

请注意,使用此示例代码需要先配置Atmel START工具和ASF库。您可以根据您的具体需求进行修改和适配。

相关内容

热门资讯

安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
omi系统和安卓系统哪个好,揭... OMI系统和安卓系统哪个好?这个问题就像是在问“苹果和橘子哪个更甜”,每个人都有自己的答案。今天,我...
原生ios和安卓系统,原生对比... 亲爱的读者们,你是否曾好奇过,为什么你的iPhone和安卓手机在操作体验上有着天壤之别?今天,就让我...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...
Alertmanager在pr... 首先,在Prometheus配置文件中,确保Alertmanager URL已正确配置。例如:ale...