在线时间12 小时
UID3072817
注册时间2015-8-27
NXP金币0
该用户从未签到
注册会员

- 积分
- 86
- 最后登录
- 2020-9-9
|
因为双核的工程建立比较麻烦,所以直接套用SDK带的multicore demo工程
双核工程编译也很麻烦,虽然SDK的demo已经配置好,但是还是要说一下,
首先要打开多工程环境,以uvprojw结尾文件就是,然后再导入另外一个核心的工程,
设置m0为当前有效工程,编译,然后再设置M4为有效工程,编译,最后下载。
因为SDK的demo跟LPC板子有点不同,所以需要进行一下更改,详细如下:
- /*
- * !brief LED0~LED7
- */
- #define BOARD_LED_GPIO GPIO
- #define BOARD_LED0_RED_GPIO_PORT 0U
- #define BOARD_LED0_RED_GPIO_PIN 15U
- #define BOARD_LED1_RED_GPIO_PORT 0U
- #define BOARD_LED1_RED_GPIO_PIN 19U
- #define BOARD_LED2_RED_GPIO_PORT 0U
- #define BOARD_LED2_RED_GPIO_PIN 21U
- #define BOARD_LED3_RED_GPIO_PORT 0U
- #define BOARD_LED3_RED_GPIO_PIN 22U
- #define BOARD_LED4_BLUE_GPIO_PORT 0U
- #define BOARD_LED4_BLUE_GPIO_PIN 25U
- #define BOARD_LED5_BLUE_GPIO_PORT 0U
- #define BOARD_LED5_BLUE_GPIO_PIN 26U
- #define BOARD_LED6_BLUE_GPIO_PORT 0U
- #define BOARD_LED6_BLUE_GPIO_PIN 29U
- #define BOARD_LED7_BLUE_GPIO_PORT 0U
- #define BOARD_LED7_BLUE_GPIO_PIN 30U
复制代码
编写led初始化函数(在M0工程编写即可)- void led_init(void)
- {
- #define LED_NUM 8
- /* Define the init structure for the output LED pin*/
- int i;
- gpio_pin_config_t led_red_config = {
- .pinDirection = kGPIO_DigitalOutput,
- .outputLogic = 0,
- };
- gpio_pin_config_t led_blue_config = {
- .pinDirection = kGPIO_DigitalOutput,
- .outputLogic = 1,
- };
-
- uint32_t group_port[] = {BOARD_LED0_RED_GPIO_PORT,\
- BOARD_LED1_RED_GPIO_PORT,\
- BOARD_LED2_RED_GPIO_PORT,\
- BOARD_LED3_RED_GPIO_PORT,\
- BOARD_LED4_BLUE_GPIO_PORT,\
- BOARD_LED5_BLUE_GPIO_PORT,\
- BOARD_LED6_BLUE_GPIO_PORT,\
- BOARD_LED7_BLUE_GPIO_PORT};
- uint32_t group_pin[] = { BOARD_LED0_RED_GPIO_PIN,\
- BOARD_LED1_RED_GPIO_PIN,\
- BOARD_LED2_RED_GPIO_PIN,\
- BOARD_LED3_RED_GPIO_PIN,\
- BOARD_LED4_BLUE_GPIO_PIN,\
- BOARD_LED5_BLUE_GPIO_PIN,\
- BOARD_LED6_BLUE_GPIO_PIN,\
- BOARD_LED7_BLUE_GPIO_PIN};
-
- for (i = 0; i < LED_NUM/2; i++) {
- GPIO_PinInit(GPIO, group_port[i], group_pin[i], &led_red_config);
- }
- for (;i < LED_NUM; i++) {
- GPIO_PinInit(GPIO, group_port[i], group_pin[i], &led_blue_config);
- }
- }
复制代码 然后编写LED翻转函数
- void led_toggle(uint32_t port, uint32_t pin)
- {
- GPIO_TogglePinsOutput(GPIO, port, 1u << pin);
- }
复制代码 工程需求已经完成,现在编写main函数
在main函数中添加led_init,while循环中添加
- led_toggle(BOARD_LED7_BLUE_GPIO_PORT, BOARD_LED7_BLUE_GPIO_PIN);
复制代码 m0工程编写完毕后,先编译,然后设置m4工程为有效工程
mian函数中更改为如下:
- /* Initialize MCMGR before calling its API */
- MCMGR_Init();
- /* Boot Secondary core application */
- PRINTF("Starting Secondary core.\n");
- MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, 1, kMCMGR_Start_Synchronous);
- /* Print the initial banner from Primary core */
- PRINTF("\r\nHello World from the Primary Core!\r\n\n");
复制代码 然后while1循环为空
编译,运行,可以看到如下现象,并且LED0和LED7一直翻转,实验成功:
|
|