完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主程序文件.
#include "DSP28x_Project.h" void main(void) [ DisableDog(); InitSysCtrl(); InitGpio(); InitSpiaGpio(); DINT; //TO Flash //memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize); EALLOW; //使能上拉 GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; //使能异步端口操作 GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; //使能端口第二功能 GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; //使能时钟 SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; //长度使能 SpiaRegs.SPICCR.bit.SPICHAR = 8; //主机模式 SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; //开启数据传输 SpiaRegs.SPICTL.bit.TALK = 1; //设置波特率(1M) SpiaRegs.SPIBRR = (12<<0); //回环(测试) SpiaRegs.SPICCR.bit.SPILBK = 1; //接收中断 SpiaRegs.SPICTL.bit.OVERRUNINTENA = 1; //SPI全局中断允许 SpiaRegs.SPICTL.bit.SPIINTENA = 1; //存入SPI设置寄存器数值 SpiaRegs.SPICCR.bit.SPISWRESET = 1; //设置运行优先级 SpiaRegs.SPIPRI.bit.FREE = 1; //初始化SPI FIFO通道 SpiaRegs.SPIFFTX.bit.SPIRST = 1; //SPI FIFO使能 SpiaRegs.SPIFFTX.bit.SPIFFENA = 1; //重置发送FIFO SpiaRegs.SPIFFTX.bit.SPIRST = 0; //FIFO发送中断清除 SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 1; //FIFO发送中断层数 SpiaRegs.SPIFFTX.bit.TXFFIL = (1<<0); //FIFO发送中断使能 SpiaRegs.SPIFFTX.bit.TXFFIENA = 1; //重置接收FIFO SpiaRegs.SPIFFRX.bit.RXFIFORESET = 0; //FIFO接收中断清除 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1; //FIFO接收中断层数 SpiaRegs.SPIFFRX.bit.RXFFIL = (1<<0); //FIFO接收中断使能 SpiaRegs.SPIFFRX.bit.RXFFIENA = 1; //FIFO发送中断清除 SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 1; //FIFO接收中断清除 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1; EDIS; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); InitPieVectTable(); //打开第六组中断 IER |= M_INT6; PieCtrlRegs.PIEIER6.bit.INTx1 = 1; PieCtrlRegs.PIEIER6.bit.INTx2 = 1; EINT; for(;;)[ SpiaRegs.SPITXBUF = 0xAA; IDLE; ] ] 中断向量: interrupt void SPIRXINTA_ISR(void) // SPI-A [ asm (" ESTOP0"); PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1; ] interrupt void SPITXINTA_ISR(void) // SPI-A [ asm (" ESTOP0"); PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 1; ] 结果执行到IDLE无法继续,资料说是IDLE可以被任何中断唤醒,换成延迟后,也不能进入中断. 可以别让我去看示例吗?我不喜欢用函数封装的开发,我想这样,告诉我如何改改? |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
348 浏览 1 评论
542 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
786 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
658 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
74浏览 29评论
248浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
209浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
67浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:21 , Processed in 1.014008 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号