[Atmel] 用ASF跑SAMD21程序(22)FreeRTOS串口

[复制链接]
2363|0
 楼主| ddllxxrr 发表于 2015-1-25 08:56 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2015-1-25 08:57 编辑

本程序是根据ASF里边的Debug Print(FreeRTOS)改写的。运得效果良好:

以下是截图:



运行这个程序首先应建立ASF工程,并选D21开发板

然后包含进FreeRTOS的两个模块具体如下:




然后点选ASF EXPLORER中的快速指导:




根据提示建立好程序。需要指出的是波特率配置那块,我用的是内8M所以数应改一下。


  1. #include <board.h>

  2. #define CONF_DBG_PRINT_SERCOM        EDBG_CDC_MODULE
  3. #define CONF_DBG_PRINT_BUFFER_SIZE   128
  4. #define CONF_DBG_PRINT_GCLK_SOURCE   GCLK_GENERATOR_0
  5. #define CONF_DBG_PRINT_BAUD_RATE     9600
  6. // This BAUD value gives 9600 baud with 48 MHz GCLK
  7. #define CONF_DBG_PRINT_BAUD_VALUE    64281//65326

  8. #define CONF_DBG_PRINT_SERCOM_MUX    EDBG_CDC_SERCOM_MUX_SETTING
  9. #define CONF_DBG_PRINT_PINMUX_PAD0   EDBG_CDC_SERCOM_PINMUX_PAD0
  10. #define CONF_DBG_PRINT_PINMUX_PAD1   EDBG_CDC_SERCOM_PINMUX_PAD1
  11. #define CONF_DBG_PRINT_PINMUX_PAD2   EDBG_CDC_SERCOM_PINMUX_PAD2
  12. #define CONF_DBG_PRINT_PINMUX_PAD3   EDBG_CDC_SERCOM_PINMUX_PAD3

  13. #endif // CONF_DBG_PRINT_H

具体程序如下:

  1. /**
  2. * \file
  3. *
  4. * \brief Empty user application template
  5. *
  6. */

  7. /**
  8. * \mainpage User Application template doxygen documentation
  9. *
  10. * \par Empty user application template
  11. *
  12. * This is a bare minimum user application template.
  13. *
  14. * For documentation of the board, go \ref group_common_boards "here" for a link
  15. * to the board-specific documentation.
  16. *
  17. * \par Content
  18. *
  19. * -# Include the ASF header files (through asf.h)
  20. * -# Minimal main function that starts with a call to system_init()
  21. * -# Basic usage of on-board LED and button
  22. * -# "Insert application code here" comment
  23. *
  24. */

  25. /*
  26. * Include header files for all drivers that have been imported from
  27. * Atmel Software Framework (ASF).
  28. */
  29. #include <asf.h>
  30. uint32_t main_counter;
  31. char main_string[] = "Main task iteration: 0x00000000\r\n";

  32. static void main_task(void *params)
  33. {
  34.         do {
  35.                 dbg_print_str("Main task loop executing\r\n");
  36.                 // Update hexadecimal 32-bit integer in string, and print it
  37.                 dbg_sprint_hexint(&main_string[23], main_counter++);
  38.                 dbg_print_str(main_string);
  39.                 vTaskDelay(1000 / portTICK_RATE_MS);
  40.         } while(1);
  41. }

  42. int main (void)
  43. {
  44.         system_init();

  45.        
  46.          dbg_init();
  47.          xTaskCreate(&main_task,
  48.          (const char *)"Main task",
  49.          configMINIMAL_STACK_SIZE + 100,
  50.          NULL,
  51.          tskIDLE_PRIORITY + 2,
  52.          NULL);
  53.          vTaskStartScheduler();
  54. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部