青皮是什么皮| 野鸭子吃什么| 鲨鱼用什么呼吸| 人为什么会发热| 女性盆腔炎吃什么药| 种牙是什么意思| 95年猪五行属什么| 白扁豆长什么样| 计发月数是什么意思| blanc什么意思| 脚旁边骨头突出叫什么| 红颜薄命的意思是什么| l代表什么意思| 恶露是什么颜色的| 冰心原名是什么| a型血和ab型血生的孩子是什么血型| 糠疹是什么引起的| 感冒黄痰吃什么药| mfd是什么意思| 生肖蛇和什么生肖相冲| 高铁和地铁有什么区别| 四个木是什么字| 低密度脂蛋白胆固醇偏高是什么意思| 什么水果消炎| 砗磲是什么| 腿肚子抽筋是什么原因| 为什么三角形具有稳定性| 男人尿道炎吃什么药最好| 看肺结节挂什么科| 感冒什么症状| 不出汗的人是什么原因| 胡萝卜含有什么维生素| 强心剂是什么药| 资讯是什么意思| 稀饭配什么菜好吃| 三角形为什么具有稳定性| 声音的高低叫什么| 怀孕期间不能吃什么| 肝不好吃什么药最好| 茉莉花茶适合什么人喝| 什么东西最刮油减肥| 7月22日什么星座| 塌腰是什么意思| 用什么梳子梳头发最好| 浪子回头金不换是什么意思| cachecache是什么牌子| 心电图逆钟向转位什么意思| 憔悴是什么意思| 女生是t是什么意思| hpv亚型是什么意思| 神经性头疼吃什么药| 1999年是什么命| 排骨粥要搭配什么好吃| 支原体感染是什么病| 直肠前突有什么症状| 青岛是鲁什么| 右侧附件区囊性回声是什么意思| ki67是什么意思| 儿童身份证需要什么材料| 什么什么相什么的成语| 养肝要吃什么| 龋牙是什么意思| 氨水是什么东西| 穿匡威的都是什么人| 导乐是什么意思| nbi是什么意思| 什么叫屈光不正| 又拉又吐吃什么药| 尿液白细胞高是什么原因| 碧霄是什么意思| 夏天喝什么茶减肥| 柳絮吃了有什么好处| 鸡蛋有什么营养| 兰陵为什么改名枣庄| 冰粉为什么要加石灰水| 吃甲钴胺有什么副作用| 窦性心律过缓吃什么药| 格拉苏蒂手表什么档次| 钾低了会出现什么症状| 过敏吃什么药最有效| 白羊女跟什么星座最配| 思源名字的寓意是什么| 番茄和西红柿有什么区别| 喜欢蹲着是什么原因| 今天有什么新闻| 精斑是什么| 血钙是什么意思| 飞机为什么怕小鸟| 地藏经适合什么人念| iron什么意思| 阴唇肥大有什么影响| 农历正月初一是什么节| 舌苔厚白是什么原因| 11.22是什么星座| 什么是斜率| 细胞核由什么组成| 刘邦的老婆叫什么名字| 震颤是什么意思| 杏鲍菇炒什么好吃| 动脉抽血是做什么检查| 88岁属什么生肖| 为什么榴莲那么贵| 黄豆什么时候播种| 左眼跳代表什么| 为什么崴脚了休息一晚脚更疼| 马蹄铁什么时候发明的| 布洛芬过量有什么危害| 喝酒伤什么器官| 一个口一个且念什么| 眼前的苟且是什么意思| c2驾照可以开什么车| 经常说梦话是什么原因| 什么中不足成语| 嘴巴里苦是什么原因| 鱼为什么睁着眼睛睡觉| 辣条吃多了有什么危害| 动漫是什么意思| 保温壶什么内胆最健康| 仙女座是什么星座| 特斯拉是什么电池| 喝咖啡对身体有什么好处| 3e是什么意思| 洋葱和什么不能一起吃| 十斋日是什么意思| 王字加一笔是什么字| iu是什么单位| bps是什么意思| 橡木色是什么颜色| 12月21是什么星座| 什么是引产| 风言风语是什么意思| 鱿鱼是什么动物| 眼发花是什么病的征兆| 血红蛋白偏高是什么意思| 头发掉的严重是什么原因| 为什么会得神经性皮炎| 肺不好吃什么| 山竹什么时候吃是应季| 大腿前侧肌肉叫什么| 什么鱼适合做酸菜鱼| 半什么半什么的成语| 轻微脑震荡有什么症状| 3.8什么星座| 眼睛屈光不正什么意思| bdsm什么意思| 奥美拉唑是什么药| 屁股疼吃什么药| 复方乙酰水杨酸片是什么药| 高山仰止是什么意思| camus是什么酒| 福鼎白茶属于什么茶| 自信是什么| 针眼是什么样子的图片| 纯原是什么意思| 心脏不好的人吃什么好| 遗言是什么意思| 肝郁气滞是什么意思| 女性膀胱炎是什么症状| 那天午后我站在你家门口什么歌| fresh是什么意思| 地藏王菩萨是管什么的| 鬼火是什么意思| 什么发抖| 毛囊炎用什么药最有效| 俄狄浦斯情结是什么意思| 外周动脉僵硬度增高什么意思| 什么是遗憾| prc是什么意思| 生酮饮食是什么意思| 六害是什么意思| 梦见别人给我介绍对象是什么意思| 全国政协副主席是什么级别| 为什么会长麦粒肿| 有两把刷子是什么意思| 吃什么可以降糖| 肚脐有分泌物还发臭是什么原因| 哈尔滨机场叫什么名字| 三门代表什么生肖| 支教是什么意思| 梦遗是什么意思| 固液法白酒是什么意思| 胆汁反流什么症状| 溺爱什么意思| b型血为什么叫贵族血| 孕吐反应强烈说明什么| 拉屎像拉水一样为什么| 喝石斛水有什么禁忌| 发烧吃什么消炎药| penguin是什么意思| 安哥拉树皮有什么功效| 儿童喉咙痒咳嗽吃什么药| 亦什么意思| 低压高吃什么降压药| 男人喜欢什么姿势| 内透声差是什么意思| 血粘度查什么项目| 平起平坐是什么动物| 右肋骨下方是什么器官| 虫草能治什么病| 毛孔粗大用什么洗面奶好| 眼睛看东西模糊是什么原因| hp-是什么意思| animal什么意思| 回归热是什么病| 物料是什么意思| otc什么意思| fic是什么意思| 1975年是什么命| 黑猫警长叫什么名字| 吃苦瓜有什么好处| 香港为什么不用人民币| 寸头适合什么脸型| 园丁是什么意思| 古灵精怪是什么意思| 转氨酶高是什么引起的| 晚上睡觉手麻是什么原因| 小孩牙龈黑紫色是什么原因| her2是什么意思| 人为什么会做噩梦| 煎饼果子的果子是什么| 亡羊补牢的寓意是什么| 韩国烧酒什么味道| 床褥是什么| 面霜和乳液有什么区别| 看脑血管挂什么科| 支原体阳性是什么病| 补气血吃什么食物| 胃萎缩是什么原因| 休克是什么| 青椒炒什么好吃| 扁桃体发炎是什么原因引起的| 胆固醇高不能吃什么水果| 早上四五点是什么时辰| 化疗和靶向有什么区别| 陈醋和香醋有什么区别| 卵巢早衰有什么症状| 什么的爬| 打开心扉是什么意思| 让球是什么意思| esr是什么意思| 女人梦到蝎子什么征兆| 王字加一笔是什么字| 过敏性鼻炎吃什么药| 不堪一击是什么意思| 煎饼卷什么菜好吃| 肠镜检查挂什么科室| 痛风频繁发作说明什么| 什么叫k线| 颞下颌关节紊乱吃什么药| 什么样的天安门| 吃鸡蛋胃疼是什么原因| 血热是什么症状| 女人喝蜂蜜水有什么好处| 为什么男人喜欢吃槟榔| 孕妇为什么怕热| 匈奴人是现在的什么人| 文爱是什么| 脚后跟痒是什么原因| 精氨酸是什么| 漂洋过海是什么生肖| 甲流是什么病| 梅毒螺旋体抗体阴性是什么意思| 葛粉吃了有什么好处| 感冒可以吃什么| 百度
打印
[RISC-V MCU 应用开发]

理性看待合同解释与法律解释的交织——债权:

[复制链接]
4308|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
PWM, TI, IO, ni, ST, pi
本帖最后由 RISCVLAR 于 2021-5-21 14:24 编辑

CH32V103应用教程——PWM播放音乐(1个TIM)

本章教程主要在第八章PWM输出的基础上进行,主要使用CH32V103的PWM播放音乐,可直接接喇叭使用,但声音较小,可通过功放接喇叭来提高音量。该例程噪音较多,仅供大家参考。

1、TIM简介及相关函数介绍
关于TIM,在前面章节已经进行过介绍,在此不再赘述。
关于PWM播放音乐原理,即将PWM模拟变成一个DAC进行语音信号的输出。大概原理就是:通过改变PWM的占空比,改变PWM每个周期内的电压。通过一连串改变PWM周期电压,可以模拟实现DAC的效果。关于这方面的具体解释,感兴趣的朋友可以去网上查阅相关资料具体了解一下。
关于TIM具体介绍,可参考前面章节及CH32V103应用手册。

2、硬件设计
本章教程使用PWM播放音乐,可直接与喇叭连接,但音量较小,可使用功放。CH32V103开发板与喇叭的连接方式如下:
  • CH32V103开发板的GND引脚与喇叭的GND引脚连接
  • CH32V103开发板的PB5引脚与喇叭的VCC引脚连接

3软件设计
本章教程主要使用TIM3产生PWM播放音乐,与前面第八章PWM输出例程类似,具体程序如下:
pwm.h文件
#ifndef __PWM_H
#define __PWM_H

#include "ch32v10x_conf.h"

void TIM_GPIO_Init( void ) ;
void TIM3_PWM_Init(u16 arr,u16 psc) ;

#endif
pwm.h文件主要进行相关定义和函数声明;
pwm.c文件

#include "pwm.h"

int count;
int num;

extern const uint16_t MyScore[];

void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

//TIM3_CH2 对应 GPIO 引脚初始化
void TIM_GPIO_Init( void )
{
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟使能

    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;             // TIM_CH2
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//TIM3 初始化配置; arr: the period value. psc: the prescaler value.
void TIM3_PWM_Init( u16 arr, u16 psc )
{

    TIM_GPIO_Init();
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef        TIM_OCInitStructure;
    NVIC_InitTypeDef         NVIC_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

    TIM_TimeBaseStructure.TIM_Period = arr;                      //设置在下一个更新事件装入活动的自动重装载寄存器周期的值,根据具体的声音频率来设定ARR
    TIM_TimeBaseStructure.TIM_Prescaler =psc;                    //设置用来作为TIMx时钟频率除数的预分频值,此处应该为不分频
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;      //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);              //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;             //选择定时器模式:TIM脉冲宽度调制模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    TIM_OCInitStructure.TIM_Pulse = 0;                            //设置待装入捕获比较寄存器的脉冲值
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;      //输出极性:TIM输出比较极性低
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);                      //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;               //定时器中断通道
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;       //抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;             //子优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;               //使能中断通道
    NVIC_Init(&NVIC_InitStructure);

    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
    TIM_ClearITPendingBit(TIM3,TIM_IT_Update);

    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);             //使能TIMx在CCR2上的预装载寄存器
    TIM_ARRPreloadConfig(TIM3, ENABLE);                           //使能TIMx在ARR上的预装载寄存器
    TIM_Cmd(TIM3, ENABLE);                                        //使能TIMx外设
}

void TIM3_IRQHandler(void)
{
    if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )
    {
      TIM_ClearITPendingBit(TIM3 , TIM_IT_Update);
      num=  (0xff & MyScore[count++]);
      TIM_SetCompare2(TIM3,num);
      count &=0x0ffff;
    }
}
pwm.c文件主要进行PWM输出初始化配置以及中断函数处理。
main.c文件

#include "debug.h"
#include "pwm.h"
#include "music.h"


/*******************************************************************************
* Function Name  : main
* Description    : Main program.
* Input          : None
* Return         : None
*******************************************************************************/
int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

        TIM3_PWM_Init( 256, 35 );

        while(1)
        {
            ;
        }
}
main.c文件主要进行函数初始化。

4下载验证
将编译好的程序下载到开发版并复位,与喇叭连接好之后可以听到喇叭播放音乐。将对应引脚连接到逻辑分析仪,产生波形具体如下:

92、PWM播放音乐-使用一个TIM.rar

701.64 KB

相关帖子

沙发
jcky001| | 2021-5-28 09:01 | 只看该作者
这个我喜欢,我喜欢音乐,研究一下
板凳
643757107| | 2021-5-31 11:19 | 只看该作者
不需要搞电容滤波了吧?学习学习,还没试过这个操作。
地板
xinxianshi| | 2021-5-31 15:19 | 只看该作者
没看懂,是怎么播放。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

296

帖子

44

粉丝
蚕豆是什么豆 61岁属什么生肖 什么不什么干 孕妇吃菠萝对胎儿有什么好处 ppsu是什么材质
中暑发烧吃什么药 1999属什么 三八是什么意思 旭日东升是什么生肖 cpi指数上涨意味着什么
尿糖弱阳性是什么意思 人怕冷是什么原因 ccp是什么意思 足字旁的字跟什么有关 湖北有什么好玩的
胃看什么科室 无缘是什么意思 梭边鱼是什么鱼 双肾盂是什么意思 肤色不均匀是什么原因
人为什么会变hcv8jop4ns2r.cn 性张力什么意思hcv9jop4ns8r.cn 水鱼煲鸡汤放什么药材xinmaowt.com gg是什么品牌hcv8jop7ns9r.cn 情绪是什么意思hcv8jop3ns2r.cn
什么是宦官hcv9jop5ns6r.cn 尿多尿急是什么原因hcv9jop5ns9r.cn 男士私处瘙痒用什么药hcv8jop0ns4r.cn 先父遗传是什么意思hcv9jop8ns1r.cn 自燃是什么意思hcv8jop4ns9r.cn
木危读什么hcv8jop8ns0r.cn 大蒜不能和什么一起吃hcv8jop2ns3r.cn 阿尔兹海默症吃什么药hcv9jop3ns3r.cn 葡萄糖氯化钠注射作用是什么hcv8jop4ns3r.cn 卫衣是什么xjhesheng.com
老鼠最怕什么hcv9jop4ns8r.cn 前降支中段心肌桥什么意思hcv8jop8ns6r.cn 为什么一动就出汗hcv9jop5ns7r.cn 芦根煮水的功效是什么hcv9jop3ns0r.cn 唇炎用什么药hcv9jop6ns7r.cn
百度