这个接着昨天的程序,很简单就是加了个输出字符串的函数: 
 
usart_serial_write_packet(USART_SERIAL, "Test String", strlen("Test String")); 
 
strlen刚编译时过不去,就说没有定义: 
 
在头文件加上#include <string.h> 
 
就可以了。 
 
以下是程序: 
 
- #include <asf.h>
 
 - #include <string.h>
 
  
 
 
- #define USART_SERIAL                     &USARTC0
 
 - #define USART_SERIAL_BAUDRATE            9600
 
 - #define USART_SERIAL_CHAR_LENGTH         USART_CHSIZE_8BIT_gc
 
 - #define USART_SERIAL_PARITY              USART_PMODE_DISABLED_gc
 
 - #define USART_SERIAL_STOP_BIT            false
 
 - uint8_t received_byte;
 
 - uint8_t hello[18]; 
 
  
- int main (void)
 
 - {
 
 -         /* Insert system clock initialization code here (sysclk_init()). */
 
 -         
 
 -         
 
 -         sysclk_init();
 
 -         
 
 -         ioport_configure_pin(IOPORT_CREATE_PIN(PORTC,3), IOPORT_DIR_OUTPUT
 
 -         |IOPORT_INIT_HIGH);
 
 -         ioport_configure_pin(IOPORT_CREATE_PIN(PORTC,2), IOPORT_DIR_INPUT);
 
 -         
 
 -         static usart_serial_options_t usart_options = {
 
 -                 .baudrate = USART_SERIAL_BAUDRATE,
 
 -                 .charlength = USART_SERIAL_CHAR_LENGTH,
 
 -                 .paritytype = USART_SERIAL_PARITY,
 
 -                 .stopbits = USART_SERIAL_STOP_BIT
 
 -         };
 
 -         
 
 -         
 
 -         //usart_serial_init(USART_SERIAL, &usart_options);
 
 -         usart_init_rs232(USART_SERIAL,&usart_options);
 
 -         
 
 -         
 
 -         
 
 -         while(1)
 
 -         {
 
 -         usart_serial_write_packet(USART_SERIAL, "Test String", strlen("Test String"));
 
 -         
 
 -                 
 
 -         }
 
 -         /* Insert application code here, after the board has been initialized. */
 
 - }
 
 
  
 
我运行了一下,可以输出不变的十六进制。我打到文本时也许我的3VU转串不太了。是一种规则的乱码。 
 
 
  |