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.
工具/软件:Code Composer Studio
大家好、
我有一个用于 TMS320F280049微控制器的定制板、原理图附在这个线程上。 我将示例项目与支持新微控制器的 C200ware 结合使用。 头文件看起来是与开发板或其他器件一起使用的。
我已经根据"F28004x_dev_user_guide.pdf"尝试了中断项目 LED 项目。 但是、这些工程会编译和加载、但调试器不会显示任何内容。 例如、定时器(计数器)不会递增。 是否有任何人拥有一个空白项目或具有所有通用器件头文件的 PWM 或计时器项目。 有什么想法吗?
//########################################################################################################################
//
//文件:timer_ex1_cputimers.c
//
//标题:CPU 定时器示例
//
//! addtogroup bitfield_example_list
//!
//
//包含的文件
//
#include "F28x_Project.h"
//
//函数原型
//
_interrupt void cpuTimer0ISR (void);
_interrupt void cpuTimer1ISR (void);
_interrupt void cpuTimer2ISR (void);
//
//主函
//
void main (void)
{
//
//初始化设备时钟和外设
//
InitSysCtrl();
//
//初始化 GPIO
//
InitGpio();
//GPIO_SetupPinMux (31U、GPIO_MUX_CPU1、0);
//GPIO_SetupPinOptions (31U、GPIO_OUTPUT、GPIO_PushPull);
//
//禁用 CPU 中断
//
Dint;
//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//
InitPieCtrl();
//
//禁用 CPU 中断并清除所有 CPU 中断标志
//
IER = 0x0000;
IFR = 0x0000;
//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)
//
InitPieVectTable();
//
//映射 ISR 函数
//
EALLOW;
PieVectTable.TIMER0_INT =&cpuTimer0ISR;
PieVectTable.Timer1_INT =&cpuTimer1ISR;
PieVectTable.TIMER2_INT =&cpuTimer2ISR;
EDIS;
//
//初始化设备外设。 对于本示例、仅初始化
// CPU 定时器。
//
InitCpuTimer();
//
//将 CPU 定时器0、1和2配置为每秒中断一次:
// 100MHz CPU 频率,1秒周期(以 μ 秒为单位)
//
ConfigCpuTimer (&CpuTimer0、100、1000000);
ConfigCpuTimer (&CpuTimer1、100、1000000);
ConfigCpuTimer (&CpuTimer2、100、1000000);
//
//为了确保精确的时序,请使用只写指令来写入
//整个寄存器。 因此、如果任何配置位发生更改
//在 ConfigCpuTimer 和 InitCpuTimers 中,还必须进行以下设置
//更新。
//
CpuTimer0Regs.TCR.ALL = 0x4000;
CpuTimer1Regs.TCR.ALL = 0x4000;
CpuTimer2Regs.TCR.ALL = 0x4000;
//
//启用连接到 CPU 定时器0、CPU INT13的 CPU INT1
//连接到 CPU 定时器1,CPU int 14连接
//到 CPU 定时器2
//
IER |= M_INT1;
IER |= M_INT13;
IER |= M_INT14;
//
//在 PIE 中启用 TINT0:组1中断7
//
PieCtrlRegs.PIEIER1.bit.INTx7=1;
//
//启用全局中断和更高优先级的实时调试事件
//
EINT;
ERTM;
//
//空闲循环。 只需坐下来循环(可选)。
//
while (1)
{
}
}
//
// cpuTimer0ISR -具有中断计数器的 CPU Timer0 ISR
//
_interrupt void cpuTimer0ISR (void)
{
CpuTimer0.InterruptCount++;
//
//确认此中断以从组1接收更多中断
//
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
//
// cpuTimer1ISR -具有中断计数器的 CPU Timer1 ISR
//
_interrupt void cpuTimer1ISR (void)
{
//
// CPU 确认中断
//
CpuTimer1.InterruptCount++;
}
//
//带有中断计数器的 cpuTimer2ISR CPU Timer2 ISR
//
_interrupt void cpuTimer2ISR (void)
{
//
// CPU 确认中断
//
CpuTimer2.InterruptCount++;
}
//
//文件结束
//
Mark、您好!
非常感谢您的耐心等待。 您的评论非常有用。 我已成功更改"f28004x_sysctrl.c"文件中的以下行;
//InitSysPll (XTAL_OSC、IMULT_10、FULT_0、PLLCLK_by_2);
InitSysPll (INT_OSC1、IMULT_10、FULT_0、PLLCLK_by_2);
微控制器现在可以做一些事情:)! 但是、它不会像我预期的那样刷写代码(我将在上面布置另一个线程)。
我更新了另一个版本的原理图、如所附的新图片所示。 我突出显示了 VDDA 器件、我不确定 VREFLO 的接地。 请告诉我原理图中的分辨率是否可以解决问题。
谢谢、
穆罕默德