主题中讨论的其他器件:TM4C123、 LM4819、
您好!
感谢大家对此时刻的支持。 我针对每个问题获得了如此多的解决方案、以至于我在这个论坛上提出了这些解决方案。
我又来了一次!
我尝试以与评估套件 DK-TM4C129相同的方式将蜂鸣器集成到我的 TM4C123 Tiva 控制器中。
我正在使用为 TM4C129提供的示例代码来对 TM4C123进行微小的更改、现在我的代码没有错误。
但在这么多练习后、我无法通过蜂鸣器听到相关声音、只有发出嘶嘶声。
请查找以下已实施的代码并建议对方法进行任何更改:
内部
main (空)
{
uint32_t ui32Temp、计数;
uint32_t ui32Retcode、ui32NewKey、ui32OldKey;
tContext sContext;
unsigned long 输入、previous;
//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
ROM_FPULazyStackingEnable();
//
//将系统时钟设置为从 PLL 以50MHz 运行。
//
/*ROM_SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);
*
G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz)、50000000);
//
//配置 USB 操作所需的引脚。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
ROM_GPIOPinConfigure (GPIO_PG4_USB0EPEN);
ROM_GPIOPinTypeUSBDigital (GPIO_PORTG_BASE、GPIO_PIN_4);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTL_BASE、GPIO_PIN_6 | GPIO_PIN_7);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
ROM_GPIOPinConfigure (GPIO_PP2_T5CCP0);
ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、1);
//
//为100Hz 中断配置 SysTick。
//
ROM_SysTickPeriodSet (SysCtlClockGet ()/ ticks_per_second);
ROM_SysTickEnable();
ROM_SysTickIntEnable();
//
//启用中断
//
// rom_IntMasterEnable();
//
//初始化显示驱动程序。
//
CFAL96x64x16Init();
//
//初始化按钮驱动程序。
//
ButtonInit();
//
//初始化两个离屏显示并分配调色板。 这些
//幻灯片菜单小工具使用缓冲区来允许动画效果。
//
GrOffScreen4BPPInit (&g_sOffscreenDisplayA、g_pu8OffscreenBufA、96、40);
GrOffScreen4BPPPaletteSet (&G) sOffscreenDisplayA、g_pui32调色板、0、
num_palette_entries);
GrOffScreen4BPPInit (&g_sOffscreenDisplayB、g_pu8OffscreenBufB、96、40);
GrOffScreen4BPPPaletteSet (&G) sOffscreenDisplayB、g_pui32调色板、0、
num_palette_entries);
//
//将编译时定义的小工具添加到小工具树中。
//
WidgetAdd (widget_root、(tWidget *)&g_sHeading);
WidgetAdd (widget_root、(tWidget *)&g_sStatus);
WidgetAdd (widget_root、(tWidget *)&g_sFileMenuWidget);
//
//初始化状态文本。
//
strcpy (g_pcStatusText、"无设备");
//
//向小工具发出初始喷漆请求,然后立即调用
//小组件管理器处理油漆消息。 这可确保
//尽快绘制显示,并节省我们的延迟时间
//否则会遇到我们在安装后是否处理了油漆消息
//并读取 SD 卡。
//
WidgetPaint (widget_root);
WidgetMessageQueueProcess();
//
//确定是否安装了 SD 卡。 如果没有,请打印
//警告并让用户安装并重新启动。
//
// ui32Retcode = disk_initialize (0);
ui32Retcode = RES_OK;
if (ui32Retcode!= RES_OK)
{
G_pcStatusLines [0]="找不到 SD 卡";
G_pcStatusLines [1]="请插入";
G_pcStatusLines [2]="A 卡和";
G_pcStatusLines [3]="重置电路板。";
ShowStatusScreen (g_pcStatusLines,4);
//返回(1);
}
其他
{
G_pcStatusLines [0]="SD 卡已找到";
// ShowStatusScreen (g_pcStatusLines,1);
//使用逻辑磁盘0装入文件系统。
//
/* f_mount (0、&g_sFatfs);
if (!FileInit())
{
退货(1);
}*/
}
//
//
//现在不播放任何内容。
//
/*g_ui32Flags = 0;
G_ui32SysTickCount = 0;
G_ui32LastTick = 0;
G_ui32CurrentVolume =初始卷百分比;*/
// PP2/PP1用于扬声器输出。
//
/*ROM_GPIOPinConfigure (GPIO_PP2_T5CCP0);
ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、GPIO_PIN_1);*/
strcpy (g_pcStatusText、"已配置扬声器");
//
//
//
//配置 USB 主机输出。
//
USBSoundInit (0、AudioEvent);
//
//将音频流初始化为已停止状态。
//
/* StopAudio();
SoundVolumeSet (60000);
SoundInit (g_ui32SysClock);*/
SoundInit (g_ui32SysClock);
SoundVolumeSet (128);
// GenerateAudio (g_pi16AudioBuffer、audio_size / 2);
//SoundStart (((int16_t *) g_pi16AudioBuffer、audio_size、8000、SoundCallback);
strcpy (g_pcStatusText、"扬声器播放");
WidgetPaint (widget_root);
WidgetMessageQueueProcess();
//
//将旧键和新键默认为不按,以便按第一个键
//将正确地在键盘上绘制。
//
ui32OldKey = NUM_white_keys + NUM_BLACK_keys;
ui32NewKey = NUM_white_keys + NUM_BLACK_keys;
/*Sound_Init();//初始化 SysTick 计时器和 DAC
钢琴家;*
//
//输入一个(几乎)无限循环来读取和处理命令
//用户。
//
while (1)
{
SoundStart (((int16_t *) g_pi16AudioBuffer、audio_size、8000、SoundCallback);
GenerateAudio (g_pi16AudioBuffer、AUDIO_SIZE / 2);
}