编写gpio_pin

时间:2019-09-04 11:26:13

标签: c++ freertos

我是C ++或freertos的新手,但我尝试仅使用1针为外部LED供电,但出现错误

expected primary-expression before ',' token
     GPIO_PinWrite(led, led_pin, 0u)

我也用另一个引脚写得到了这个^^

此问题已通过删除定义后面的半格来解决

我不知道如何制作gpio pinWrite,但我复制了裸机功能示例中的那个。

这是我正在使用imxrt1050-evkb的任务

**this is standard import by MCUXpresso**
#include <stdio.h>
#include "board.h"
#include "peripherals.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "MIMXRT1052.h"
#include "fsl_debug_console.h"

**this is freeRTOS**
#include "FreeRTOSConfig.h"
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"


#define led SEMC_D12;
#define led_pin GPIO_EMC_34;

volatile bool g_pinSet = false;


void vOnOff(void *pvParameters)
{
    while(true){
            vTaskDelay(200);
            PRINTF("Hello led\n");
            if(g_pinSet)
            {
                GPIO_PinWrite(led, led_pin, 1u);
                g_pinSet = true;
            }
            else
            {
                GPIO_PinWrite(led, led_pin, 0u);
                g_pinSet = false;
            }

}

}
int main(void) {
     gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
    /* Init board hardware. */
    BOARD_InitBootPins();
    BOARD_InitBootClocks();
    BOARD_InitBootPeripherals();
    /* Init FSL debug console. */
    BOARD_InitDebugConsole();

//    GPIO_PinInit(led , led_pin , &led_config);

    xTaskCreate(
            (TaskFunction_t) vOnOff,
            "task3",
            configMINIMAL_STACK_SIZE,
            NULL,
            10,
            NULL
    );
    vTaskStartScheduler();
    return 0 ;
}

我相信这里的代码^^是我在此示例中使用的全部功能,因为我在一个沙盒中工作,并且到处都是意大利面条代码

正如您在我的代码中看到的那样,我收到了GPIO_PinInit注释,我不知道我是否需要使用它?

我希望将信号发送到io引脚上

1 个答案:

答案 0 :(得分:1)

FreeRTOS是RTOS的抽象-与处理gpio无关。

#define led SEMC_D12;
#define led_pin GPIO_EMC_34;

无效。宏定义后不应有;。由于存在;,因此编译器会看到:

GPIO_PinWrite(SEMC_D12;, GPIO_EMC_34;, 0u)

,并且存在编译错误。

MCUXpresso SDK API Reference Manual说:

  

静态无效GPIO_PinWrite(GPIO_Type *基,uint32_t端口,uint32_t引脚,uint8_t输出)

我想您需要4个参数来GPIO_PinWrite,而不是3个。