打印
[PIC®/AVR®/dsPIC®产品]

求各位大佬试试PIC18F的DMA的IOC触发方式

[复制链接]
867|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这是我改成软件触发了,在IOC中断里触发,可以实现传输一个字符。
我改成IOC触发就不行了。会丢失几个数。间隔的丢。。。好奇怪啊。
谁能搞定这个功放发个帖分享一下。
#include "mcc_generated_files/system/system.h"

/*
    Main application
*/
void LED(void)
{
    LED_Toggle();
    DMA1_TransferStart();
}
int main(void)
{
    SYSTEM_Initialize();

    // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
    // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global Interrupts
    // Use the following macros to:

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();
   
    SW_SetInterruptHandler(LED);
    printf("Hello \n");
    for(uint8_t i=0;i<10;i++)
    {
        srcVarName1[i]='1'+i;
    }
    for(int i=0;i<10;i++)
    {
        putch(srcVarName1[i]);
    }
    putch('\n');


    while(1)
    {
    }   
}






使用特权

评论回复
沙发
gaoyang9992006| | 2023-9-27 11:32 | 只看该作者
是有点问题。

使用特权

评论回复
板凳
wahahaheihei| | 2023-10-24 20:47 | 只看该作者
可能是哪儿没设置对。

使用特权

评论回复
地板
lcczg| | 2023-11-1 09:12 | 只看该作者
我感觉是优先级没有设置。应该设置优先级最高。
int main(void)
{
    SYSTEM_Initialize();

    // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
    // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global Interrupts
    // Use the following macros to:

    // Enable the Global Interrupts
    //INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();
    DMA1_SetDMAPriority(1);
    DMA1_StartTransferWithTrigger();

    while(1)
    {
    }   
}

使用特权

评论回复
5
Jacquetry| | 2023-11-20 11:04 | 只看该作者
优先级有问题吗?

使用特权

评论回复
6
Undshing| | 2023-11-21 08:58 | 只看该作者
改改优先级试试吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3536

帖子

10

粉丝