原创 XMEGA128B1 使用 USBCDC 的例子

2015-1-24 00:22 1544 21 13 分类: MCU/ 嵌入式

在ASF中有一个STDIO_USB_EXAMPLE的例子,可以方便的演示CDC串口。但是为了更好的理解这个例子,我们自己重新创建,然后通过ASF添加函数,这样可以更好的掌握整个过程。下面是我创建项目的过程,供大家参考。
 

  • 首先创建项目,选择gcc c asf project。



234811u0kzd8151e520ko8.jpg 
 

  • 然后选择xmega128B1以及xmega128B1-xplained模板。



234812jmoh99jokc0hh47m.jpg 

 

  • 在ASF向导中,添加USB Device(server)- cdc_stdio



234812u1tqn9lmu94u99y4.jpg 


 

  • 然后打开config_usb.h。先注释掉第49行的强制警告提示,不然每次编译都会产生一个警告。

 

  1. //#warning You must refill the following definitions with a correct values
  2.  
复制代码


 

  • 然后将124/125行修改为下面语句

 

  1. #define  UDI_CDC_ENABLE_EXT(port)          stdio_usb_enable()
  2. #define  UDI_CDC_DISABLE_EXT(port)         stdio_usb_disable()
  3.  
复制代码


 

  • 最后添加包含头文件 <stdio_usb.h>

 

  1. #include <stdio_usb.h>
  2.  
复制代码


 

  • 再打开文件conf_clock.h,先将系统时钟改为SYSCLK_SRC_RC32MHZ。

 

  1. //#define CONFIG_SYSCLK_SOURCE          SYSCLK_SRC_RC2MHZ
  2. #define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32MHZ
  3. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_RC32KHZ
  4. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_XOSC
  5. //#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLL
  6.  
复制代码


 

  • 然后允许CONFIG_OSC_RC32_CAL 和CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC

 

  1. #define CONFIG_USBCLK_SOURCE                USBCLK_SRC_RCOSC
  2. #define CONFIG_OSC_RC32_CAL                 48000000UL
  3. #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC  OSC_ID_USBSOF
  4.  
复制代码


 

  • 最后在打开main.c,在main函数中输入下面代码

 

  1. sysclk_init();
  2.         board_init();
  3.  
  4.         // Initialize interrupt vector table support.
  5.         irq_initialize_vectors();
  6.  
  7.         // Enable interrupts
  8.         cpu_irq_enable();
  9.  
  10.         stdio_usb_init();
  11.  
  12.         uint8_t ch;
  13.  
  14.         while (true) {
  15.  
  16.                 ch = getchar();
  17.                 putchar(ch);
  18.                 LED_Toggle(LED2_GPIO);
  19.         }
  20.  
复制代码


 

  • 编译项目文件,通过Flip将编译后HEX写入芯片。


000050tpxfo8oopug5uor0.jpg 

 

  • 重新上电(记得先取下短路块),应该就可以找到串口了。


000050wacta3qvkknqz9da.jpg 
 

  • 打开一个串口终端,选择上面的串口,并设置波特率为115200,随便输入什么,如果屏幕上可以显示出你输入的字符,LED同时闪动,就代表成功了。


000051tv166bs2js4uyc2v.jpg

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条