The new start

This commit is contained in:
syx_computer
2025-09-30 11:49:27 +08:00
commit 0196ca1e90
6998 changed files with 3811467 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Copyright (c) 2008-2023 100askTeam : Dongshan WEI <weidongshan@qq.com>
* Discourse: https://forums.100ask.net
*/
/* Copyright (C) 2008-2023 深圳百问网科技有限公司
* All rights reserved
*
*
* 免责声明: 百问网编写的文档,仅供学员学习使用,可以转发或引用(请保留作者信息),禁止用于商业用途!
* 免责声明: 百问网编写的程序,可以用于商业用途,但百问网不承担任何后果!
*
*
* 本程序遵循GPL V3协议使用请遵循协议许可
* 本程序所用的开发板: DShanMCU-F103
* 百问网嵌入式学习平台https://www.100ask.net
* 百问网技术交流社区: https://forums.100ask.net
* 百问网官方B站 https://space.bilibili.com/275908810
* 百问网官方淘宝: https://100ask.taobao.com
* 联系我们(E-mail) weidongshan@qq.com
*
* 版权所有,盗版必究。
*
* 修改历史 版本号 作者 修改内容
*-----------------------------------------------------
* 2023.08.04 v01 百问科技 创建文件
*-----------------------------------------------------
*/
#include "driver_passive_buzzer.h"
#include "driver_lcd.h"
#include "driver_timer.h"
#include "stm32f1xx_hal.h"
#include "tim.h"
extern TIM_HandleTypeDef htim1;
static TIM_HandleTypeDef *g_HPWM_PassiveBuzzer = &htim1;
/**********************************************************************
* 函数名称: PassiveBuzzer_Init
* 功能描述: 无源蜂鸣器的初始化函数
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 修改日期: 版本号 修改人 修改内容
* -----------------------------------------------
* 2023/08/04 V1.0 韦东山 创建
***********************************************************************/
void PassiveBuzzer_Init(void)
{
TIM_OC_InitTypeDef sConfig = { 0 };
GPIO_InitTypeDef GPIO_InitStruct = {0};
/**TIM1 GPIO Configuration
PA8 ------> TIM1_CH1
*/
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
//HAL_TIM_Base_DeInit(g_HPWM_PassiveBuzzer);
g_HPWM_PassiveBuzzer->Instance = TIM1;
g_HPWM_PassiveBuzzer->Init.Prescaler = 71;
g_HPWM_PassiveBuzzer->Init.CounterMode = TIM_COUNTERMODE_UP;
g_HPWM_PassiveBuzzer->Init.Period = 999; /* 1KHz */
g_HPWM_PassiveBuzzer->Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
g_HPWM_PassiveBuzzer->Init.RepetitionCounter = 0;
g_HPWM_PassiveBuzzer->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
//HAL_TIM_Base_Init(g_HPWM_PassiveBuzzer);
TIM_Base_SetConfig(g_HPWM_PassiveBuzzer->Instance, &g_HPWM_PassiveBuzzer->Init);
//return;
sConfig.OCMode = TIM_OCMODE_PWM1; // PWM 输出的两种模式:PWM1 当极性为低,CCR<CNT,输出低电平,反之高电平
sConfig.OCPolarity = TIM_OCPOLARITY_LOW; // 设置极性为低(硬件上低电平亮灯)
sConfig.OCFastMode = TIM_OCFAST_DISABLE; // 输出比较快速使能禁止(仅在 PWM1 和 PWM2 可设置)
sConfig.Pulse = 499; // 在 PWM1 模式下,50%占空比
HAL_TIM_PWM_ConfigChannel(g_HPWM_PassiveBuzzer, &sConfig, TIM_CHANNEL_1);
}
/**********************************************************************
* 函数名称: PassiveBuzzer_Control
* 功能描述: 无源蜂鸣器控制函数
* 输入参数: on - 1-响, 0-不响
* 输出参数: 无
* 返 回 值: 无
* 修改日期: 版本号 修改人 修改内容
* -----------------------------------------------
* 2023/08/04 V1.0 韦东山 创建
***********************************************************************/
void PassiveBuzzer_Control(int on)
{
if (on)
{
HAL_TIM_PWM_Start(g_HPWM_PassiveBuzzer, TIM_CHANNEL_1);
}
else
{
HAL_TIM_PWM_Stop(g_HPWM_PassiveBuzzer, TIM_CHANNEL_1);
}
}
/**********************************************************************
* 函数名称: PassiveBuzzer_Set_Freq_Duty
* 功能描述: 无源蜂鸣器控制函数: 设置频率和占空比
* 输入参数: freq - 频率, duty - 占空比
* 输出参数: 无
* 返 回 值: 无
* 修改日期: 版本号 修改人 修改内容
* -----------------------------------------------
* 2023/08/04 V1.0 韦东山 创建
***********************************************************************/
void PassiveBuzzer_Set_Freq_Duty(int freq, int duty)
{
TIM_OC_InitTypeDef sConfig = { 0 };
HAL_TIM_PWM_Stop(g_HPWM_PassiveBuzzer, TIM_CHANNEL_1);
HAL_TIM_Base_DeInit(g_HPWM_PassiveBuzzer);
g_HPWM_PassiveBuzzer->Instance = TIM1;
g_HPWM_PassiveBuzzer->Init.Prescaler = 71;
g_HPWM_PassiveBuzzer->Init.CounterMode = TIM_COUNTERMODE_UP;
g_HPWM_PassiveBuzzer->Init.Period = 1000000 / freq - 1;
g_HPWM_PassiveBuzzer->Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
g_HPWM_PassiveBuzzer->Init.RepetitionCounter = 0;
g_HPWM_PassiveBuzzer->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
HAL_TIM_Base_Init(g_HPWM_PassiveBuzzer);
sConfig.OCMode = TIM_OCMODE_PWM1; // PWM 输出的两种模式:PWM1 当极性为低,CCR<CNT,输出低电平,反之高电平
sConfig.OCPolarity = TIM_OCPOLARITY_LOW; // 设置极性为低(硬件上低电平亮灯)
sConfig.OCFastMode = TIM_OCFAST_DISABLE; // 输出比较快速使能禁止(仅在 PWM1 和 PWM2 可设置)
sConfig.Pulse = (1000000 / freq - 1) * duty / 100; // 在 PWM1 模式占空比
HAL_TIM_PWM_ConfigChannel(g_HPWM_PassiveBuzzer, &sConfig, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(g_HPWM_PassiveBuzzer, TIM_CHANNEL_1);
}
/**********************************************************************
* 函数名称: PassiveBuzzer_Test
* 功能描述: 无源蜂鸣器测试程序
* 输入参数: 无
* 输出参数: 无
* 无
* 返 回 值: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2023/08/04 V1.0 韦东山 创建
***********************************************************************/
void PassiveBuzzer_Test(void)
{
PassiveBuzzer_Init();
LCD_Init();
LCD_Clear();
while (1)
{
LCD_PrintString(0, 0, "PassiveBuzzer");
LCD_PrintString(0, 2, "ON ");
PassiveBuzzer_Control(1);
mdelay(1000);
LCD_PrintString(0, 0, "PassiveBuzzer");
LCD_PrintString(0, 2, "OFF");
PassiveBuzzer_Control(0);
mdelay(1000);
}
}