请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL2-RM57L 主题中讨论的其他器件:HALCOGEN
尝试使 HTU 工作一段时间。 现在、我已经使 N2HET 程序工作(现在只生成一个 PWM、与 SPNA217中的正弦波生成示例中一样)。 但是、当我尝试进行 HTU 传输时、它不想工作。 无论如何、我们都得到了以下代码。 我不使用 HalCoGen、因为我更喜欢创建我自己的函数和所有这些函数、而这种方法的潜在最终用途是我们无法使用它、因为它会生成大量死代码(即使您不打算使用它、也会生成所有代码)、 但希望寄存器名称应该足够有意义。 它应该做的是从大约75%的占空比开始、然后 HTU 启动并将占空比更改为~66%。
int main (void){ //使用 HTU 传输的数据 uint32_t data =(412 << 6); uint32_t * data_addr =&data; // *初始化 HTU */ DCP1REG->DCPx[0].ITCOUNT =(1 << 16)|(1 << 0);//执行单个元素传输和单个帧传输 DCP1REG->DCPx[0]。IDDRET <1 |已写入内存(memHET)且内存为1 |(1)。 (1 << 18)|//设置为循环缓冲模式 (0x28 <<0);//设置初始 NHET 地址(ECMP 的数据字段为地址6) DCP1REG->DCPx[0].IFADDRA =(uint32_t) DATA_addr;//设置主存储器 中的初始地址 HTU1REG->CPENA=1;// DCP[0]=(uint32_t)控制数据包 <TCR<1) //启用 HTU1 //启用 GIOB[6] LED 进行调试 GIOCNTL->GCR0 = 1; GIOB->DIR |=(1 << 6); // *初始化 N2HET * HTU 连接到 N2HET1 */ HET1REG->DIR |= 0xFFFF;//启用 N2HET1[0]引脚以进行输出 //设置分辨率预分频器 HET1REG->PFR |=(1 & 0x3F)|(HET1REG->PFR & 0x3F); HET1REG->PFR |=((6 & 0x7)<8 & 0x7PFR);(HET1REG<8) HET1REG->REQENS |=(1 << 0);//在第0行启用请求 HET1REG->GCR |=(1 << 24)|//打开引脚 (1 << 17)|//忽略暂挂 (1 < 16)|//设置为主模式 (1 << 0));//启用 HET //将程序放入内存中 // HET1RAM 是到 N2HET1 RAM 位置的指针。 het1_instructions 是实际的 N2HET 指令 memcpy ((void *) HET1RAM、(const void *) het1_instructions、sizeof (het1_instructions)); while (1){ //检查数据是否正在传输。 如果是、请打开 LED if ((HTU1REG->BUSY[0]&(1 << 24))!= 0) GIOB->DSET =(1 << 6); } 返回0; }
下面是 N2HET 程序、以防它有用。 它会以 HET IDE 的形式出现、但 TI 网站似乎不允许我下载任何 HET 汇编器/调试器工具...
#define HET1_LENGTH 4 //针对 N2HET1外设 const het_memory_t het1_instructions[]={ // CNT //程序 // 000000 0 00001 0110 0 0000 0 // 0000 0000 0000 0010 1100 0010 0000 0x00002C20、 //控制 // 000 01 0 0000000000000001001110000 // 0000 1000 0000 0000 0010 0111 0000 0x08000270, //数据 0x00000000, //保留 0x00000000 }, { // MCMP //程序 // 000000 000 0 000000011 0000 0 0 0 00000 // 0000 0000 0000 0110 0000 0000 0x00006000, //控制 // 000 00 0 000 1 000000010 00000 0 1 0 11 00 0 // 0000 0000 0100 0000 0100 0000 0101 1000 0x00404058, //数据 0x00003400, //保留 0x00000000 }, { // MOV32 //程序 // 000000 0 000000011 0100 00001 // 0000 0000 0000 0110 1000 0000 0001 0x00006801, //控制 // 00000 0 000 0 00000000000000 0 0 01 11 0 // 0000 0000 0000 0000 0000 0000 0000 0000 1110 0x0000000E、 //数据 0x00003400、 //保留 0x00000000 }、 { //分支 //程序 // 000000 000 0 00000000 1101 0000000 // 0000 0000 0000 0001 1010 0000 0000 0x00001A00、 //控制 // 000 00 0 000 00000000 00000 00000 00000 00 0 // 0000 0000 0000 0000 0000 0000 0000 0000 0000 0x00000000、 //数据 0x00000000、 //保留 0x00000000 } }; //将指令存储器和指令类型默认值放入联合体 //这更方便方便易用。 指令存储器和 //程序结构将占用相同的存储器空间。 typedef union{ het_memory_t instr_memory[HET1_length]; struct{ CNT L00; MCMP L01; MOV32 L02; BR L03; }program_struct; } het1_program; //实际实例化程序 volatile het1_program het1_program_load;
我可能只是犯了一个愚蠢的小错误、但如果您能提供任何帮助、我们将不胜感激。 希望所有这些都有意义。 大脑是一个小死,因为它试图弄清楚这一点并长时间盯着它。
-最大值