| 
在线时间53 小时
UID425151
注册时间2013-4-5
NXP金币0 
 该用户从未签到 高级会员 
 
 
	积分551 
最后登录1970-1-1 | 
 
 
 楼主|
发表于 2014-11-26 21:47:47
|
显示全部楼层 
| 复制代码#include "mqx.h"
#include "bsp.h"
void main_task(uint32_t);
const TASK_TEMPLATE_STRUCT  MQX_template_list[] =
{
    /* Task Index, Function,  Stack, Priority, Name,   Attributes,          Param, Time Slice */
    { 1,           main_task, 2500,  6,        "main", MQX_AUTO_START_TASK, 0,     0 },
    { 0 }
};
void main_task(uint32_t initial_data)
{
    LWGPIO_STRUCT                         led_PTB16, led_PTB17, led_PTB18, led_PTB19;
    FILE_PTR                              uart_fd;
    uint32_t                                 error;
    uint32_t                                 ser_opts = IO_SERIAL_NON_BLOCKING;
        uint8_t                             buff[100] = {0};
        uint32_t                count  = 0;
        uint32_t                                n = 0;
      
        if(!lwgpio_init(&led_PTB16, (GPIO_PORT_B | GPIO_PIN16), LWGPIO_DIR_OUTPUT, LWGPIO_VALUE_NOCHANGE))
        {
                printf("Initializing LED1 GPIO as output failed.\n");
                _task_block();
        }
            
        if(!lwgpio_init(&led_PTB17, (GPIO_PORT_B | GPIO_PIN17), LWGPIO_DIR_OUTPUT, LWGPIO_VALUE_NOCHANGE))
        {
                printf("Initializing LED1 GPIO as output failed.\n");
                _task_block();
        }
        
        if(!lwgpio_init(&led_PTB18, (GPIO_PORT_B | GPIO_PIN18), LWGPIO_DIR_OUTPUT, LWGPIO_VALUE_NOCHANGE))
        {
                printf("Initializing LED1 GPIO as output failed.\n");
                _task_block();
        }
            
        if(!lwgpio_init(&led_PTB19, (GPIO_PORT_B | GPIO_PIN19), LWGPIO_DIR_OUTPUT, LWGPIO_VALUE_NOCHANGE))
        {
                printf("Initializing LED1 GPIO as output failed.\n");
                _task_block();
        }
    lwgpio_set_functionality(&led_PTB16, 1);
    lwgpio_set_functionality(&led_PTB17, 1);
    lwgpio_set_functionality(&led_PTB18, 1);
    lwgpio_set_functionality(&led_PTB19, 1);
    lwgpio_set_value(&led_PTB16, LWGPIO_VALUE_HIGH);
    lwgpio_set_value(&led_PTB17, LWGPIO_VALUE_HIGH);
    lwgpio_set_value(&led_PTB18, LWGPIO_VALUE_HIGH);
    lwgpio_set_value(&led_PTB19, LWGPIO_VALUE_HIGH);
    
        uart_fd = fopen("ittyc:", "w+");
        if(uart_fd == NULL)
        {
                fprintf(stderr, "Fatal Error: Unable to open device %s\n", "ittyb:");
                _task_block();
        }
 
        //下面这段加上之后,while(1)内最后一个端口翻转之后就会出现主现在阻塞!!!!!
        ioctl(uart_fd, IO_IOCTL_DEVICE_IDENTIFY, &error);
        if(error != IO_DEV_TYPE_PHYS_SERIAL_INTERRUPT)
        {
                fprintf(stderr, "Fatal Error: Device is not interrupt driven serial line.\n");
                _task_block();
        }
        
        error = ioctl(uart_fd, IO_IOCTL_SERIAL_SET_FLAGS, &ser_opts);
        if(error != MQX_OK)
        {
                fputs("Fatal Error: ioctl(). \n", stderr);
                _task_block();
        }
    while (TRUE)
    {    
            lwgpio_toggle_value(&led_PTB16);
            lwgpio_toggle_value(&led_PTB17);
            lwgpio_toggle_value(&led_PTB18);
            lwgpio_toggle_value(&led_PTB19);
            _time_delay(200);
            
    }
}
 
 | 
 |