Skip to content

例程-双核

案例-LED1&2 闪烁

// CPU0
#include "zf_common_headfile.h"
#pragma section all "cpu0_dsram"

#define LED1 P20_8

int core0_main(void)
{
    clock_init();                   // 获取时钟频率<务必保留>
    debug_init();                   // 初始化默认调试串口
    // 此处编写用户代码 例如外设初始化代码等

    gpio_init(LED1, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    // 此处编写用户代码 例如外设初始化代码等
    cpu_wait_event_ready();         // 等待所有核心初始化完毕
    while (TRUE)
    {
        // 此处编写需要循环执行的代码

        gpio_toggle_level(LED1);
        system_delay_ms(200);

        // 此处编写需要循环执行的代码
    }
}

#pragma section all restore
// CPU1
#include "zf_common_headfile.h"
#pragma section all "cpu1_dsram"

#define LED2 P20_9

void core1_main(void)
{
    disable_Watchdog();                     // 关闭看门狗
    interrupt_global_enable(0);             // 打开全局中断
    // 此处编写用户代码 例如外设初始化代码等

    gpio_init(LED2, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    // 此处编写用户代码 例如外设初始化代码等

    cpu_wait_event_ready();                 // 等待所有核心初始化完毕
    while (TRUE)
    {
        // 此处编写需要循环执行的代码

        gpio_toggle_level(LED2);
        system_delay_ms(300);

        // 此处编写需要循环执行的代码
    }
}
#pragma section all restore