请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 您好!
我有以下代码。 当我错过时、会怎么样呢
SysCtlDelay (SysCtlClockGet ()/12);
一条直线 它将丢失一些有关最大速度的样本?
#include #include #include "inc/hw_memmap.h" #include "driverlib/adc.h" #include "driverlib/gpio.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" int main (void) { #if defined (target_is_TM4C129_RA0)|| \ 已定义(TARGET_IS_TM4C129_RA1)|| \ 已定义(TARGET_IS_TM4C129_RA2) uint32_t ui32SysClock; #endif // //该数组用于存储从 ADC FIFO 读取的数据。 它 //必须与正在使用的序列发生器的 FIFO 一样大。 此示例 //使用 FIFO 深度为1的序列3。 如果是另一个序列 //与更深的 FIFO 一起使用,则必须更改数组大小。 // uint32_t pui32ADC0Value[1]; // //使用 PLL 将时钟设置为以20MHz (200MHz/10)运行。 时间 //使用 ADC,您必须使用 PLL 或提供16 MHz 时钟 //源。 // TODO:必须更改 SYSCTL_XTAL_VALUE 以匹配的值 板上的//晶体。 // #if defined (target_IS_TM4C129_RA0)|| \ 已定义(TARGET_IS_TM4C129_RA1)|| \ 已定义(TARGET_IS_TM4C129_RA2) ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、20000000); #else SysCtlClockSet (SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); #endif // //必须启用 ADC0外设才能使用。 // SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); // //对于此示例、ADC0与端口 E3上的 AIN0一起使用。 //您使用的实际端口和引脚可能有所不同,请参阅 //数据表以了解更多信息。 需要启用 GPIO 端口 E //因此可以使用这些引脚。 // TODO:将其更改为您正在使用的 GPIO 端口。 // SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); //test SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_1); GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_1、GPIO_PIN_1);//PD1和 PE3必须从外部连接 // //为这些引脚选择模拟 ADC 功能。 //请查阅数据表以查看每个引脚分配的函数。 // TODO:更改此选项以选择您正在使用的端口/引脚。 // GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3); // //使用处理器信号触发器启用采样序列3。 序列3 //将在处理器发送信号启动时执行单次采样 //转换。 每个 ADC 模块有4个可编程序列、序列0 //至序列3。 此示例任意使用序列3。 // ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、0); // //在序列3上配置步骤0。 对中的通道0 (ADC_CTL_CH0)进行采样 //单端模式(默认)并配置中断标志 //(ADC_CTL_IE)将在采样完成时置1。 告诉 ADC 逻辑 //这是序列3上的最后一次转换(ADC_CTL_END)。 序列 // 3只有一个可编程步骤。 序列1和2有4个步骤、和 //序列0有8个可编程步骤。 因为我们只做一个 //使用序列3进行转换,我们将仅配置步骤0。 了解详情 //有关 ADC 序列和步骤的信息、请参考数据表。 // ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END); // //由于采样序列3现在已配置,因此必须将其启用。 // ADCSequenceEnable (ADC0_BASE、3); // //清除中断状态标志。 这样做是为了确保 //中断标志在我们进行采样之前被清除。 // ADCIntClear (ADC0_BASE、3); // //永久采样 AIN0。 显示控制台上的值。 // while (1) { // //触发 ADC 转换。 // ADCProcessorTrigger (ADC0_BASE、3); // //等待转换完成。 // while (!ADCIntStatus (ADC0_BASE、3、false)) { } // //清除 ADC 中断标志。 // ADCIntClear (ADC0_BASE、3); // //读取 ADC 值。 // ADCSequenceDataGet (ADC0_BASE、3、pui32ADC0Value); // //此函数提供了生成恒定长度的方法 //延迟。 函数延迟(以周期为单位)= 3 *参数。 延迟 //任意地250ms。 // #if defined (target_IS_TM4C129_RA0)|| \ 已定义(TARGET_IS_TM4C129_RA1)|| \ 已定义(TARGET_IS_TM4C129_RA2) SysCtlDelay (ui32SysClock / 12); #else SysCtlDelay (SysCtlClockGet ()/12); #endif } }