完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 chailyuan 于 2015-12-8 15:50 编辑
我是PMSM3_4控制电机的程序,想在程序里面加上串口发送数据的代码,但是不论怎么改都不行。 我找到了串口通信的例程,在原串口通信工程里串口是正常工作的。我把正常工作的串口通信的c文件的内容全部覆盖掉控制电机程序的c文件内容,再那个工程里运行时候看到还是设置不了串口寄存器。GPIO的管脚是可以配置的,但就是不能设置寄存器 这是什么问题啊?我只是想简单的发送下程序里面的数据而已。。也不需要什么别的功能,但为啥寄存器都写不了,什么情况 这是串口通信的小例子。为什么在不同的工程下有不同的结果呢?为什么在我控制电机的工程下就不能正常写入串口寄存器呢 #include "DSP281x_Device.h" #include "DSP281x_Examples.h"char send_buff = 0x00; //发送缓冲 char rece_buff = 0x00; //接收缓冲 interrupt void SCIRXINT_isr(void); //中断1中断子程 void Initsci(void) //UART初始化子程序 { SciaRegs.SCICCR.all=0x0007; //1位停止位,用奇校验,禁用回馈测试, //普通协议模式,8位数据位 SciaRegs.SCICTL1.all=0x0003; //禁止接收错误中断,禁用传输唤醒模式, //禁用休眠模式,使能数据发送和接收 SciaRegs.SCIHBAUD=0x01; SciaRegs.SCILBAUD=0xE7; //150M CLKOUT,波特率为9600 = CLKOUT/(BRR+1)*8 //BRR=1E7H SciaRegs.SCICTL2.all=0x0002; //使用接收中断,禁用发送中断 SciaRegs.SCIPRI.all=0x0010; //高中断优先级,仿真挂起时完成当前操作 SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset } interrupt void SCIRXINT_isr() //中断子程序 { Uint16 k; k=SciaRegs.SCIRXBUF.all; asm(" nop "); SciaRegs.SCITXBUF=k; asm(" nop "); PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // clear Receive interrupt flag } void main(void){ // PLL, WatchDog, enable Peripheral Clocks// This example function is found in the DSP281x_SysCtrl.c file. InitSysCtrl(); EALLOW; SysCtrlRegs.LOSPCP.all=0x0002; EDIS; // Setup only the GP I/O only for SCI-A functionality EALLOW; GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1; GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;//将GPIOF端口上的4,5管脚设置成SCIA外设功能 EDIS; // Disable CPU interrupts DINT; // Initialize the PIE control registers to their default state. InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000; IFR = 0x0000;// Initialize the PIE vector table with pointers to the shell Interrupt InitPieVectTable(); Initsci(); //初始化UART设置寄存器 EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.RXAINT = &SCIRXINT_isr; EDIS; // Enable interrupts required for this example PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE block PieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, INT1 IER |= 0x100; // Enable CPU INT EINT; while(1); } |
|
相关推荐
2个回答
|
|
楼主这个代码可以使用论坛的代码编辑器插入,否则格式太乱了,没有人愿意挑战。
|
|
|
|
对于SCI的GPIO的配置,似乎不够哦,好需要上拉及异步输出配置 建议调用controlsuit的SCI例程进行修改,你的程序也不复杂,改改容易的 再跑断点看看 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
1007 浏览 0 评论
1863 浏览 1 评论
755 浏览 1 评论
2012 浏览 0 评论
基于DSP C6000教学实验箱_数字图像处理教程:5-9 图像反色实验案例分享
2320 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-11 20:01 , Processed in 1.320498 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191