GD32F103C8单片机的PWM输出试验
2024-11-19 来源:elecfans
在国产化芯片浪潮崛起的今天,给大家介绍一款国产单片机,它就是兆易创新“GD”,今天主要给大家介绍的是关于这款单片机官方DEMO的PWM输出试验,重点是使用keil仿真输出波形。
大家在使用keil的Debug模式时,可能看到过下面这个图标,它就是用来观察波形的,输入特定的GPIO引脚,就可以直观看出波形。
来自keil帮助文档介绍内容
下面以GD32F10x系列的一款单片机GD32F103C8T6的DEMO程序来给大家演示这个功能怎么使用。 首先,我们进入兆易创新官网,然后找到下图中的官方DEMO,点击下载。
官网下载
用到的文件
然后将上图中的文件复制到Template文件夹下,再用keil打开工程文件即可。 打开工程后,我们看到Device中默认选择的时GD32F107VC,因为这是官方DEMO基于该芯片创建的工程,但是我们使用的时GD32F103C8,所以需要将选择为GD32F103C8。
默认Device
更改Device
更改完Device后,点击C/C++选项,将Define:更改为USE_STDPERIPH_DRIVER,GD32F10X_MD,这个文件是根据不同内存的单片机决定的,所以需要更改为MD。
更改Define
然后到这一步,编译,编译成功后点击魔术棒-Debug,选择Use simulator,点击OK,最后点击Debug,进入调试模式。 根据官方给出的备注,使用的定时器1对应的3个通道,分别输出不同的占空比,对应3个GPIOA1、GPIOA2、GPIOA3。
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
引脚定义
在Debug模式下,按照下图中点击对应位置。
Debug界面调出示波器
弹出变量输入界面,点击新建,分别输入PORTA.1回车、PORTA.2回车、PORTA.3回车,注意需要将显示类型更改为Bit。 输入的引脚是和我们定义的PWM输出引脚有关的,这个要根据不同的引脚来修改。
变量输入
更改显示类型
到这里,就可以执行仿真了。 点击复位-Run全速运行,即可看到三个通道输出的波形,红色代表25%占空比,绿色代表50%占空比,蓝色代表75%占空比。
我们计算一下,程序里面设定的时钟源为PLL,最后APB1_Clock为72Mhz,定时器1的预分频系数为1,不分频,ARR计数值为10000,PWM频率=(72M/72)/(10000)=100Hz,T=1/F=0.01s。 20%=0.002s/0.01s*100;50%=0.005s/0.01s*100;75%=0.0075s/0.01s*100;
timer_initpara.prescaler = (72-1);
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = (10000-1);
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER1,&timer_initpara);
PWM频率100Hz
75%占空比波形
经过计算,仿真的波形和预想的结果是一致的,所以这个方法比较适用于手边没有开发板的情况下,可以使用这一功能去验证。