在线时间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);
-
- }
- }
复制代码
|
|