关于atmega32u4的CDC模拟串口程序
编程环境使用的是AVR studio
下载程序在这个链接里https://www.pjrc.com/teensy/usb_serial.html
关键是电脑要安装驱动才能正常通信
1 include <avr/io.h> 2 #include <avr/pgmspace.h> 3 #include <stdint.h> 4 #include <util/delay.h> 5 #include <stdio.h> 6 #include <string.h> 7 #include "usb_serial.h" 8 9 10 #define LED_CONFIG (DDRD |= (1<<6)) 11 #define LED_ON (PORTD |= (1<<6)) 12 #define LED_OFF (PORTD &= ~(1<<6)) 13 #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) 14 15 void send_str(const char *s); 16 17 int main(void) 18 { 19 CPU_PRESCALE(0); 20 21 LED_CONFIG;//输出拉低 22 LED_OFF; 23 24 usb_init(); 25 26 while(1) 27 { 28 unsigned char buffer[3] = {0}; 29 30 int n = usb_serial_available();//获取缓存区中的字节数 31 32 if(n>3 || (n<3 && n!=0)) 33 { 34 send_str(PSTR(" please enter 3 words\n")); 35 n = 0; 36 usb_serial_flush_input(); 37 } 38 else 39 { 40 for(int i = 0;i<n;i++) 41 { 42 int m = usb_serial_getchar(); 43 if(m>=0) 44 { 45 buffer[i] = m; 46 } 47 } 48 } 49 if (buffer[0]== 0xAA && buffer[2] == 0x55) 50 { 51 switch(buffer[1]) 52 { 53 case 0x31: 54 55 // DDRD |= (1<<6);//输出拉高 56 // LED_ON; 57 send_str(PSTR(" OPEN RHP-260+\n")); 58 break; 59 60 case 0x32: 61 62 // DDRD |= (1<<6);//输出拉低 63 // LED_OFF; 64 memset(buffer,0,3); 65 send_str(PSTR(" OPEN RHP-700+\n")); 66 break; 67 68 default: 69 usb_serial_putchar(buffer[1]); 70 send_str(PSTR(" wrong\n")); 71 memset(buffer,0,3); 72 break; 73 } 74 } 75 } 76 } 77 78 // Send a string to the USB serial port. The string must be in 79 // flash memory, using PSTR 80 // 81 void send_str(const char *s) 82 { 83 char c; 84 while (1) { 85 c = pgm_read_byte(s++); 86 if (!c) break; 87 usb_serial_putchar(c); 88 } 89 }
头文件usb_serial.h和usb_serial.c 是使用上面网页下载的,没有改动,只改了主函数,串口指令控制点灯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律