Haawking DSC2803X 经验贴---数码管显示pwm频率和占空比 一、说明: 作者:覃陆奥 板卡版本:HX320F28034PT IDE版本:Haawking IDE V0.5.3 编译器版本:HK100V1 作用:28034输出pwm波,并控制移位寄存器,在四位数码管上显示频率和占空比。 第一步:配置数码管的工作模式 /****************************************************************** 文件名:smg.C 参 数:无 返回值:无 作 用:配置数码管的工作方式 ******************************************************************/
- #include "smg.h"
- unsigned char smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
- 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};//0~F 数码管段选数据
- void SMG_Init(void)
- {
- EALLOW;
- SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;// 开启GPIO时钟
- //SMG数据控制端口配置
- GpioCtrlRegs.GPBMUX1.bit.GPIO32=0;
- GpioCtrlRegs.GPBDIR.bit.GPIO32=1;
- GpioCtrlRegs.GPBPUD.bit.GPIO32=0;
复制代码
smg.h头文件
- #ifndef SMG_H_
- #define SMG_H_
- #include "DSC28027_Device.h" // DSP2833x 头文件
- #include "DSC28027_Examples.h" // DSP2833x 例子相关头文件
- //数码管位选信号线管脚定义
- #define SEG1_SETH (GpioDataRegs.GPASET.bit.GPIO2=1)
- #define SEG1_SETL (GpioDataRegs.GPACLEAR.bit.GPIO2=1)
- #define SEG2_SETH (GpioDataRegs.GPASET.bit.GPIO3=1)
- #define SEG2_SETL (GpioDataRegs.GPACLEAR.bit.GPIO3=1)
- #define SEG3_SETH (GpioDataRegs.GPASET.bit.GPIO4=1)
- #define SEG3_SETL (GpioDataRegs.GPACLEAR.bit.GPIO4=1)
- #define SEG4_SETH (GpioDataRegs.GPASET.bit.GPIO5=1)
- #define SEG4_SETL (GpioDataRegs.GPACLEAR.bit.GPIO5=1)
- //74HC164时钟管脚定义
- #define SPICLKA_SETH (GpioDataRegs.GPBSET.bit.GPIO32=1)
- #define SPICLKA_SETL (GpioDataRegs.GPBCLEAR.bit.GPIO32=1)
- //74HC164数据管脚定义
- #define SPISIMOA_SETH (GpioDataRegs.GPBSET.bit.GPIO33=1)
- #define SPISIMOA_SETL (GpioDataRegs.GPBCLEAR.bit.GPIO33=1)
- void SMG_Init(void);
- void SMG_DisplayInt(Uint16 num);
- void SMG_DisplayFloat(float num,unsigned char dotnum);
- #endif /* SMG_H_ */
复制代码
第二步:配置GPIO6-7为ePWM外设模式 /****************************************************************** 文件名:leds.C 参 数:无 返回值:无 作 用:配置GPIO0-6配置的epwm输出口的寄存器配置。
******************************************************************/
- void LED_Init(void)
- {
- EALLOW;
- SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;// 开启GPIO时钟
- //LED1端口配置
- //GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;//设置为通用GPIO功能
- //GpioCtrlRegs.GPADIR.bit.GPIO0=1;//设置GPIO方向为输出
- //GpioCtrlRegs.GPAPUD.bit.GPIO0=0;//使能GPIO上拉电阻
- //LED2端口配置
- //GpioCtrlRegs.GPAMUX1.bit.GPIO1=0;
- //GpioCtrlRegs.GPADIR.bit.GPIO1=1;
- //GpioCtrlRegs.GPAPUD.bit.GPIO1=0;
- //LED3端口配置
- //GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;
- //GpioCtrlRegs.GPADIR.bit.GPIO2=1;
- //GpioCtrlRegs.GPAPUD.bit.GPIO2=0;
- //LED4端口配置
- //GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;
- //GpioCtrlRegs.GPADIR.bit.GPIO3=1;
- //GpioCtrlRegs.GPAPUD.bit.GPIO3=0;
- //LED5端口配置
- //GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;
- //GpioCtrlRegs.GPADIR.bit.GPIO4=1;
- //GpioCtrlRegs.GPAPUD.bit.GPIO4=0;
- //LED6端口配置
- GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;
- GpioCtrlRegs.GPADIR.bit.GPIO0=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO0=0;
- //LED7端口配置
- GpioCtrlRegs.GPAMUX1.bit.GPIO1=0;
- GpioCtrlRegs.GPADIR.bit.GPIO1=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO1=0;
- //LED8端口配置
- GpioCtrlRegs.GPAMUX1.bit.GPIO12=0;
- GpioCtrlRegs.GPADIR.bit.GPIO12=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO12=0;
- //LED9端口配置
- GpioCtrlRegs.GPAMUX2.bit.GPIO16=0;
- GpioCtrlRegs.GPADIR.bit.GPIO16=1;
- GpioCtrlRegs.GPAPUD.bit.GPIO16=0;
- //GpioDataRegs.GPASET.bit.GPIO0=1;
- //GpioDataRegs.GPASET.bit.GPIO1=1;
- //GpioDataRegs.GPASET.bit.GPIO2=1;
- //GpioDataRegs.GPASET.bit.GPIO3=1;
- //GpioDataRegs.GPASET.bit.GPIO4=1;
- GpioDataRegs.GPASET.bit.GPIO6=1;
- GpioDataRegs.GPASET.bit.GPIO7=1;
- GpioDataRegs.GPASET.bit.GPIO12=1;
- GpioDataRegs.GPASET.bit.GPIO16=1;
- EDIS;
- }
复制代码
leds.h头文件
- #ifndef _LEDS_H_
- #define _LEDS_H_
- #include "DSC28027_Device.h" // DSP2833x 头文件
- #include "DSC28027_Examples.h" // DSP2833x 例子相关头文件
- //#define LED1_OFF (GpioDataRegs.GPASET.bit.GPIO0=1)
- //#define LED1_ON (GpioDataRegs.GPACLEAR.bit.GPIO0=1)
- //#define LED1_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO0=1)
- //#define LED2_OFF (GpioDataRegs.GPASET.bit.GPIO1=1)
- //#define LED2_ON (GpioDataRegs.GPACLEAR.bit.GPIO1=1)
- //#define LED2_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO1=1)
- //#define LED3_OFF (GpioDataRegs.GPASET.bit.GPIO2=1)
- //#define LED3_ON (GpioDataRegs.GPACLEAR.bit.GPIO2=1)
- //#define LED3_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO2=1)
- //#define LED4_OFF (GpioDataRegs.GPASET.bit.GPIO3=1)
- //#define LED4_ON (GpioDataRegs.GPACLEAR.bit.GPIO3=1)
- //#define LED4_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO3=1)
- //#define LED5_OFF (GpioDataRegs.GPASET.bit.GPIO4=1)
- //#define LED5_ON (GpioDataRegs.GPACLEAR.bit.GPIO4=1)
- //#define LED5_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO4=1)
- #define LED6_OFF (GpioDataRegs.GPASET.bit.GPIO0=1)
- #define LED6_ON (GpioDataRegs.GPACLEAR.bit.GPIO0=1)
- #define LED6_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO0=1)
- #define LED7_OFF (GpioDataRegs.GPASET.bit.GPIO1=1)
- #define LED7_ON (GpioDataRegs.GPACLEAR.bit.GPIO1=1)
- #define LED7_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO1=1)
- #define LED8_OFF (GpioDataRegs.GPASET.bit.GPIO12=1)
- #define LED8_ON (GpioDataRegs.GPACLEAR.bit.GPIO12=1)
- #define LED8_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO12=1)
- #define LED9_OFF (GpioDataRegs.GPASET.bit.GPIO16=1)
- #define LED9_ON (GpioDataRegs.GPACLEAR.bit.GPIO16=1)
- #define LED9_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO16=1)
- void LED_Init(void);
- #endif /* LED_H_ */
复制代码
第三步:配置定时中断 /****************************************************************** 参 数:无 返回值:无 作 用:初始化定时器,设定计数器初始化。 ******************************************************************/
- #ifndef TIME_H_
- #define TIME_H_
- #include "DSC28027_Device.h" // DSP2833x 头文件
- #include "DSC28027_Examples.h" // DSP2833x 例子相关头文件
- void TIM0_Init(float Freq, float Period);
- INTERRUPT void TIM0_IRQn(void);
- void TIM1_Init(float Freq, float Period);
- INTERRUPT void TIM1_IRQn(void);
- void TIM2_Init(float Freq, float Period);
- INTERRUPT void TIM2_IRQn(void);
- #endif /* TIME_H_ */
复制代码
第四步:配置主程序文件 。 /****************************************************************** 文件名:main.C 参 数:无 返回值:无 作 用:设置pwm波的配置,调用pwm寄存器的值给数码管模块,实现所有函数的调用。 ******************************************************************/
- void Epwm4Init(void);
- void EpwmGpioInt(void);
复制代码
数码管模块原理图 数码管连接图 频率显示 |