2501_91681562 2025-12-28 14:06 采纳率: 0%
浏览 3

stm32有源蜂鸣器不响,请各位看一下

proteus仿真里面,有源蜂鸣器不响,是按照江协科技视频里面的步骤来的,请各位help看一下,谢谢各位。

img

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-12-28 14:06
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    根据你的描述,问题是关于STM32单片机的,有源蜂鸣器在Proteus仿真环境中不响。按照江协科技的视频教程进行设置。

    解决方案

    1. 检查蜂鸣器的连接: 确保蜂鸣器的连接正确,是否连接到正确的引脚上。
    2. 检查蜂鸣器的驱动代码: 检查是否正确驱动蜂鸣器,是否设置了正确的频率和波形。
    3. 检查Proteus的设置: 确保Proteus的设置正确,是否设置了正确的时钟频率和蜂鸣器的驱动方式。
    4. 检查单片机的配置: 检查单片机的配置是否正确,是否设置了正确的时钟频率和蜂鸣器的驱动方式。

    核心代码

    // 设置蜂鸣器的频率
    uint32_t freq = 1000; // 1kHz
    
    // 设置蜂鸣器的波形
    uint8_t wave = 1; // 正弦波
    
    // 驱动蜂鸣器
    void buzzer_init(void) {
        // 设置蜂鸣器的引脚为输出
        GPIO_InitTypeDef GPIO_InitStruct;
        GPIO_InitStruct.Pin = GPIO_PIN_5; // 选择蜂鸣器的引脚
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    
        // 设置蜂鸣器的频率和波形
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
        HAL_TIM_PWM_SetCompareValue(&htim1, TIM_CHANNEL_1, freq);
        HAL_TIM_PWM_SetWaveform(&htim1, TIM_CHANNEL_1, wave);
    }
    
    // 驱动蜂鸣器
    void buzzer_on(void) {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET);
    }
    
    // 停止驱动蜂鸣器
    void buzzer_off(void) {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_RESET);
    }
    

    注意

    上述代码仅供参考,具体的驱动代码可能需要根据单片机的具体型号和Proteus的设置进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月28日