⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwmvoice.c

📁 PWM语音播放器基于单片机PwmVoice.ewd
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:           PwmVoice.c
** Last modified Date:  2008.07.18 
** Last Version:        v1.0
** Description:        PWM声音播放器
** 
**------------------------------------------------------------------------------------------------------
** Created By:           柴利明
** Created date:        2008.07.18 
** Version:             v1.0
** Descriptions:        
**		 		     
**
**------------------------------------------------------------------------------------------------------
** Modified by:        
** Modified date:
** Version:
** Description:
**/
#include   "Pwmconfig.h" 
                
/*********************************************************************************************
                 变量初始化
**********************************************************************************************/
 

  uint32	RdAddr = 0;	                         /*  初始化读起始地址为0;          */
  uint8 	RdData;
  uint16        RdDataConvert;
/*******************************************************************************************
 **函数原形:void Go2JTAG(void)
 **功能描述:防止JTAG失效程序
 **参数说明:无
 **返回值:无
********************************************************************************************/

void Go2JTAG(void)
{
   SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);            /*  使能GPIO端口B模块            */
   GPIODirModeSet(GPIO_PORTB_BASE,KEY5,GPIO_DIR_MODE_IN);  /*  设置PB5为输入                */
   if( GPIOPinRead(GPIO_PORTB_BASE,KEY5) == 0 )            /*  读写PB5的电平状态            */
   {
     while(1);                                             /*  循环                         */
   }
}


/***********************************************************************************************
 **函数原形:void GPIO_Port_A_ISR(void)
 **功能描述:放音功能:将音频数据从FLASH中读出,转换成PWM波。
 **参数说明:无
 **返回值:无
************************************************************************************************/

void GPIO_Port_D_ISR(void)
{
  GPIOPinIntClear(GPIO_PORTD_BASE, KEY1);		   /*  清除中断标志                  */
  IntEnable(INT_TIMER0A);                                  /*  使能INT_TIMER0A中断           */ 
  PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, true);           /*  使能PWM0输出                  */
  PWMGenEnable(PWM_BASE, PWM_GEN_0);                       /*  使能PWM发生器0                */  
}

/**************************************************************************************************
 **函数原形:void GPIO_Port_D_ISR(void)
 **功能描述:停止放音,即禁止TIMER1
 **参数说明:无
 **返回值:无
****************************************************************************************************/
void GPIO_Port_B_ISR(void)
{
  GPIOPinIntClear(GPIO_PORTB_BASE, KEY3);		
  IntDisable(INT_TIMER0A);                                   /*  禁止定时器中断             */
  PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, false);            /*  禁止PWM0输出               */
}
/*************************************************************************************************
 **函数名称  Timer1A_ISR
 **函数功能  定时器1中断处理程序。工作在32位周期触发模式下。
 **输入参数  无。
 **输出参数  无。
**************************************************************************************************/
void Timer0A_ISR (void)
{
    TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);          /*  清除定时器0中断               */
    SSTF016B_RD(RdAddr, 1, &RdData);                         /*  读取数据                      */
    RdDataConvert = RdData*3;                                /*  对音频进行放大                */                             
    PWMPulseWidthSet(PWM_BASE, PWM_OUT_0,RdDataConvert);     /*  PWM占空比调制                 */
    RdAddr++;                                                /*  地址计数器加1                 */  
    if ( RdAddr == 0x1FFFFF )
    {
       RdAddr = 0;
    }
    TimerEnable(TIMER0_BASE, TIMER_A);                       /*  使能定时器0                    */
} 

/***********************************************************************************************
 **函数原形:int main(void)
 **功能描述:主函数
 **参数说明:无
 **返回值:0
***********************************************************************************************/
int main(void)
{ 
  Go2JTAG();                                               /*  防止JTAG失效                  */
  SysCtlClockSet( SYSCTL_SYSDIV_8 | SYSCTL_USE_PLL | 
                    SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ );  /*  设置系统时钟20M               */ 
  SPI_Init();	                                           /*  SPI总线初始化                 */
  GPIO_Init();                                             /*  初始化GPIO端口                */
  TIMER_Init();                                            /*  初始化TIMER                   */
  PWM_Init();                                              /*  初始化PWM                     */
  IntEnable(INT_GPIOD);                                    /*  使能GPIO D 口中断             */
  IntEnable(INT_GPIOB);                                    /*  使能GPIO B 口中断             */
  IntMasterEnable();                                       /*  处理器使能。                  */
  while (1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -