📄 pwmvoice.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 + -