主题中讨论的其他器件:TM4C123GH6PM
您好,
在数据表 TM4C123GH6PM 的时钟部分、我已经了解到可以使用列出的各种选项来生成系统时钟。
但是、当我使用内部30kHz 对其进行测试时、器件被锁定(调试器)。无论如何、我使用 LM 闪存编程器将其解锁。
因此、我发布此查询、需要了解数据表中未明确提及的以下内容。
1)。 我们可以运行器件 tm4c123g 的最小频率是多少?
2)、为什么系统在30kHz 内部 OSC 下运行时被锁定。
此致
Sajad
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.
您好,
在数据表 TM4C123GH6PM 的时钟部分、我已经了解到可以使用列出的各种选项来生成系统时钟。
但是、当我使用内部30kHz 对其进行测试时、器件被锁定(调试器)。无论如何、我使用 LM 闪存编程器将其解锁。
因此、我发布此查询、需要了解数据表中未明确提及的以下内容。
1)。 我们可以运行器件 tm4c123g 的最小频率是多少?
2)、为什么系统在30kHz 内部 OSC 下运行时被锁定。
此致
Sajad
尊敬的 Ralph:
是的、我将讨论相同的 LFIOSC、其容差为50%。
我知道、根据数据表、该振荡器适用于深度睡眠模式、但同一数据表还指出它也可以驱动系统时钟。
我 在两天前执行的操作-挖掘计时器模块功能、我将计时器0配置为32位模式、并生成中断以使 LED 闪烁、这非常好。 我们还可以将相同的定时器 Timer0配置为16位模式,作为一对分离的定时器 A 和定时器 B。因此,我为定时器0子定时器 A 执行了一些程序写操作,以生成中断并切换 LED 状态,但当我的时钟设置为40MHz 时, 和16位计时器的值范围可以是0-65535,我看不到切换发生了,所以我将时钟配置为使用内部 OSC 30kHz, 并将我的计时器周期设置为系统时钟、以查看 LED 每秒切换次数。但我的处理器调试器会被锁定、我必须使用 LMFlash 编程器才能解锁。
因此、我想知道为什么它会显示此类行为、或者我错过了与计时器相关的东西。
以下是我的代码
#include
#include
#include "inc/tm4c123gh6m.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"
uint16_t 周期;
Int A;
int main (空)
{
SysCtlClockSet (SYSCTL_USE_OSC|SYSCTL_OSC_INT30);//被锁定
////////// SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
a = SysCtlClockGet ();
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1);
SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAGE|TIMER_CFG_A_PERIODICRACASE);
周期= SysCtlClockGet ();
TimerLoadSet (TIMER0_BASE、TIMER_A、周期-1);
IntEnable (INT_TIMER0A);
TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
IntMasterEnable();
TimerEnable (TIMER0_BASE、TIMER_A);
while (1)
{
}
}
void xyz (void)
{
TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);
IF (GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_1))
{
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、0);
}
其他
{
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、2);
}
}
此致
Sajad
您好 Sajad、
[引用 USER="Sajad Raster4"]我知道数据表中的该振荡器适用于深度睡眠模式,但同一数据表中也指出它也可以驱动系统时钟。
这种行为是相同的。 在深度睡眠模式中、它驱动系统时钟。 这是它应该这样做的唯一时候。 器件无法执行您在仅从 LFIOSC 运行时尝试执行的代码。
您不能像描述的那样使用它来操作器件。
如果你需要一个较低的时钟频率、那么 你应该为 SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN)使用一个较高的 SYSCTL_SYSDIV_x 设置;API