Thread 中讨论的其他器件:C2000WARE
工具与软件:
我正在使用器件库、因此我只能使用外设频率选项、即(OSC 为25MHz 时为125MHz)
但我需要180MHz 频率
您能指导我获得180MHz 吗
请检查我编写的代码、但它无法正常工作
请为我提供此解决方案

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我正在使用器件库、因此我只能使用外设频率选项、即(OSC 为25MHz 时为125MHz)
但我需要180MHz 频率
您能指导我获得180MHz 吗
请检查我编写的代码、但它无法正常工作
请为我提供此解决方案

您好、Aishwarya、
您能检查并检查我的 代码吗
#include "driverlib.h"
#include "device.h"
#include "board.h"
//
// Globals (全局变量)
//
uint16_t myADC0Result0;
uint16_t myADC0Result1;
uint16_t myADC1Result0;
uint16_t myADC1Result1;
//
// Main (主菜单)
//
void main (void)
{
//
//初始化器件时钟和外设
//
device_init();
//
//禁用引脚锁定和启用内部上拉。
//
device_initGPIO();
//
//初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
//
Interrupt_initModule();
//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//
interrupt_initVectorTable();
Pin_Init ();
//
//设置 ADC、初始化 SOC 以由软件触发
//信号模式:单端
//转换分辨率:12位;
//
board_init();
//
//启用全局中断(INTM)和实时中断(DBGM)
//
EINT;
ERTM;
/// initCPUTimersinit ();
configureSystemClock();
//无限循环
//
while (1)
{
//
//转换、等待完成并存储结果
//
ADC_forceMultipleSOC (myADC0_BASE、(ADC_FORCE_SOC0 | ADC_FORCE_SOC1));
//
//等待 ADCA 完成、然后等待确认标志
//
while (ADC_getInterruptStatus (myADC0_BASE、ADC_INT_number1)= false)
{
}
ADC_clearInterruptStatus (myADC0_BASE、ADC_INT_number1);
ADC_forceMultipleSOC (myADC1_base、(ADC_FORCE_SOC0 | ADC_FORCE_SOC1));
//
//等待 ADCC 完成、然后确认标志
//
while (ADC_getInterruptStatus (myADC1_base、ADC_INT_number1)= false)
{
}
ADC_clearInterruptStatus (myADC1_base、ADC_INT_number1);
//
//存储结果
//
myADC0Result0 = ADC_readResult (ADCARESULT_BASE、ADC_SOC_NUMBER0);
myADC0Result1 = ADC_readResult (ADCARESULT_BASE、ADC_SOC_number1);
myADC1Result0 = ADC_readResult (ADCCRESULT_BASE、ADC_SOC_NUMBER0);
myADC1Result1 = ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number1);
//
//软件断点。 此时、转换结果存储在中
// myADC0Result0、myADC0Result1、myADC1Result0和 myADC1Result1。
//
//再次单击运行以获得更新的转换。
//
ESTOP0;
}
}
空 Pin_Init (空)
{
GPIO_setDirectionMode (31、GPIO_DIR_MODE_OUT);
//将 GPIO13配置为 GPIO (非外设功能)
GPIO_setPinConfig (GPIO_31_GPIO31);
//GPIO_writePin (13、1);
//初始将输出设置为低电平
// GPIO_writePin (13、0);
//可选择启用输出限定(默认为 SYNC 模式)
// GPIO_setQualificationMode (13、GPIO_QUAL_SYNC);
}
空 configureSystemClock (空)
{
//启用对受保护寄存器的写入访问
EALLOW;
unlockRegs();
//步骤1:设置振荡器源(XTAL 或 INTOSC)
SYSCTL_selectOscSource (SYSCTL_OSCSRC_XTAL);//选择外部晶振
SYSCTL_setclock (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (18)| SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2));
//步骤3:启用外设时钟(示例:启用 GPIO 和计时器时钟)
//SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_GPIOA);
SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_TIMER0);
lockRegs();
uint32_t sysClockFreq = SYSCTL_getClock (DEVICE_OSCSRC_FREQ);
// printf ("系统时钟频率:%lu Hz\n"、sysClockFreq);
EDIS;
}
void unlockRegs (void)
{
EALLOW;
//解锁受保护的寄存器
HWREG (CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1)= 0x0;
HWREG (CLKCFG_BASE + SYSCTL_O_SYSPLLCTL1)= 0x0;
EDIS;
}
void lockRegs (void)
{
EALLOW;
//通过设置适当的位来锁定受保护的寄存器
HWREG (CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1)= 0x1;//锁定时钟配置
HWREG (CLKCFG_BASE + SYSCTL_O_SYSPLLCTL1)= 0x1;//锁定 PLL 配置
EDIS;
}
我将在其中获取解锁和锁定电阻器 API 和 void configureSystemClock (void)。这是用于更改频率的函数
Tejashri,
虽然我无法查看您的代码、但如果您有任何具体的问题、我可以帮助您解决。 我们提供参考 C2000WARE 代码、可在开发应用代码时参考这些代码。
并且在这里我将获得解锁和锁定调整器 API 以及 void configureSystemClock (void)这是用于更改频率的函数
似乎我们没有一个 API 可以执行此操作、但 SysCtl_setClock() 锁定/解锁 PLL、TRM 解释了这个过程、 您可以看看、我在下面添加了一个代码段。 SysCtl_setClock()是函数 TO
更改频率。

此致、
Aishwarya.