📄 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 "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "hw_nvic.h"
#include "hw_adc.h"
#include "hw_pwm.h"
#include "hw_gpio.h"
#include "sysctl.h"
#include "systick.h"
#include "gpio.h"
#include "timer.h"
#include "flash.h"
#include "adc.h"
#include "pwm.h"
#include "interrupt.h"
#include "config.h"
/*********************************************************************************************
端口初始化
**********************************************************************************************/
#define KEY1 GPIO_PIN_7 /* 定义KEY1为录音功能 */
#define KEY2 GPIO_PIN_1 /* 定义KEY2为放音功能 */
#define KEY3 GPIO_PIN_4 /* 定义KEY3为擦除功能 */
#define KEY4 GPIO_PIN_4 /* 定义KEY4为停止功能 */
#define KEY5 GPIO_PIN_1 /* 防止JTAG失效 */
#define LED1 GPIO_PIN_0 /* 定义LED1为录音指示 */
#define LED2 GPIO_PIN_5 /* 定义LED2为放音指示 */
#define LED3 GPIO_PIN_4 /* 定义LED3为擦除指示 */
#define LED4 GPIO_PIN_6 /* 定义LED4为停止指示 */
/*********************************************************************************************
变量初始化
**********************************************************************************************/
uint32 WrAddr = 0; /* 初始化写起始地址为0; */
uint32 RdAddr = 0; /* 初始化读起始地址为0; */
uint32 ADData = 0; /* AD采集数据存储变量 */
uint8 WrData; /* 写入FLASH存储变量 */
uint8 RdData; /* 从FLASH读出数据存储变量 */
uint32 RdDataConvert; /* 待转换的存储变量 */
/*******************************************************************************************
**函数原形:void Go2JTAG(void)
**功能描述:防止JTAG失效程序
**参数说明:无
**返回值:无
********************************************************************************************/
void Go2JTAG(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); /* 使能GPIO端口B模块 */
GPIODirModeSet(GPIO_PORTB_BASE,KEY5,GPIO_DIR_MODE_IN); /* 设置PB1为输入 */
if(GPIOPinRead(GPIO_PORTB_BASE,KEY5)==0) /* 读写PB1的电平状态 */
{
while(1); /* 循环 */
}
}
/*********************************************************************************************
**函数原形:void GPIO_Port_C_ISR(void)
**功能描述:录音功能:启动A/D采集音频信号,将信号存于FLASH中
**参数说明:无
**返回值:无
**********************************************************************************************/
void GPIO_Port_C_ISR(void)
{
GPIOPinIntClear(GPIO_PORTC_BASE, KEY1); /* 清除中断标志 */
GPIOPinWrite(GPIO_PORTA_BASE, LED1, ~LED1); /* 录音指示 */
GPIOPinWrite(GPIO_PORTC_BASE, LED2, LED2);
GPIOPinWrite(GPIO_PORTC_BASE, LED3, LED3);
GPIOPinWrite(GPIO_PORTC_BASE, LED4, LED4);
SSTF016B_WRSTART(); /* 启动FLASH写功能 */
IntEnable(INT_TIMER0A); /* 使能定时器0外设 */
IntDisable(INT_TIMER1A); /* 禁能定时器1外设 */
}
/***********************************************************************************************
**函数原形:void GPIO_Port_A_ISR(void)
**功能描述:放音功能:将音频数据从FLASH中读出,转换成PWM波。
**参数说明:无
**返回值:无
************************************************************************************************/
void GPIO_Port_A_ISR(void)
{
GPIOPinIntClear(GPIO_PORTA_BASE, KEY2); /* 清除中断标志 */
GPIOPinWrite(GPIO_PORTA_BASE, LED1, LED1);
GPIOPinWrite(GPIO_PORTC_BASE, LED2, ~LED2); /* 放音指示 */
GPIOPinWrite(GPIO_PORTC_BASE, LED3, LED3);
GPIOPinWrite(GPIO_PORTC_BASE, LED4, LED4);
IntEnable(INT_TIMER1A);
IntDisable(INT_TIMER0A);
}
/*************************************************************************************************
** 函数原形:void GPIO_Port_B_ISR(void)
** 功能描述:擦除FLASH中的数据
** 参数说明:无
** 返回值:无
*************************************************************************************************/
void GPIO_Port_B_ISR(void)
{
GPIOPinIntClear(GPIO_PORTB_BASE, KEY3);
GPIOPinWrite(GPIO_PORTA_BASE, LED1, LED1);
GPIOPinWrite(GPIO_PORTC_BASE, LED2, LED2);
GPIOPinWrite(GPIO_PORTC_BASE, LED3, ~LED3);
GPIOPinWrite(GPIO_PORTC_BASE, LED4, LED4);
SSTF016B_Erase(0, 499); /* 擦除芯片 */
WrAddr = 0; /* 写地址归0 */
IntDisable(INT_TIMER0A);
IntDisable(INT_TIMER1A);
RdAddr = 0; /* 读地址归0 */
GPIOPinWrite(GPIO_PORTA_BASE, LED1, ~LED1);
GPIOPinWrite(GPIO_PORTC_BASE, LED2, ~LED2);
GPIOPinWrite(GPIO_PORTC_BASE, LED3, ~LED3);
GPIOPinWrite(GPIO_PORTC_BASE, LED4, ~LED4);
}
/**************************************************************************************************
** 函数原形:void GPIO_Port_D_ISR(void)
** 功能描述:停止录音和放音,即禁能TIMER0和TIMER1
** 参数说明:无
** 返回值:无
****************************************************************************************************/
void GPIO_Port_D_ISR(void)
{
GPIOPinIntClear(GPIO_PORTD_BASE, KEY3);
GPIOPinWrite(GPIO_PORTA_BASE, LED1, LED1);
GPIOPinWrite(GPIO_PORTC_BASE, LED2, LED2);
GPIOPinWrite(GPIO_PORTC_BASE, LED3, LED3);
GPIOPinWrite(GPIO_PORTC_BASE, LED4, ~LED4);
IntDisable(INT_TIMER0A);
IntDisable(INT_TIMER1A);
}
/***************************************************************************************************
** 函数名称 Timer0A_ISR
** 函数功能 定时器0中断处理程序。工作在32位周期触发模式下。
** 输入参数 无。
** 输出参数 无。
***************************************************************************************************/
void Timer0A_ISR (void)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -