当前位置: 首页 > ds >正文

1-ATSAMV71Q21

ATSAMV71Q21

void serial_rx_cb(const struct usart_async_descriptor *const io_descr)
{uint8_t ch,count;count = io_read(&USART_0.io,&ch,1);count =count;uart0_rx_buffer[uart0_recived_counter]=ch;if(uart0_comlete==1)return;//上一包数据还未来得及处理。//usart_tx(&ch,1);switch (uart0_recived_counter){case 0 : {if (ch==0x55)uart0_recived_counter++;else uart0_recived_counter=0;}break;case 1 : {if (ch==0xAA)uart0_recived_counter++;else uart0_recived_counter=0;}break;case 3 : {uart0_recived_counter++;uart0_frame_count=uart0_rx_buffer[3];}break;default:{uart0_recived_counter++;}break;}if ((uart0_recived_counter==(uart0_frame_count+5))&&(uart0_frame_count!=0)){//usart_tx(uart0_rx_buffer,uart0_recived_counter);uart0_frame_count=0;uart0_comlete=1;}
}
void serial_tx_cb(const struct usart_async_descriptor *const io_descr)
{
}
/*串口1**************************************************************************************/
void serial1_rx_cb(const struct usart_async_descriptor *const io_descr)
{uint8_t ch,count;count = io_read(&USART_1.io,&ch,1);count = count;//usart1_tx(&ch,1);if (uart1_comlete==1){return;}//上一包数据未处理完成则退出uart1_rx_buffer[uart1_recived_counter]=ch;uart1_recived_counter++;//收到一包数据自加1//app_stop=1;uart1_time_count_1ms=0;	//收到一个数据,则计数器清零uart1_rx_begin=1;		//标记进入接收
}
void serial1_tx_cb(const struct usart_async_descriptor *const io_descr)
{
}
/*初始化串口的接收回调函数************************************************************************/
void usart_init_user()
{usart_async_register_callback(&USART_0, USART_ASYNC_TXC_CB, serial_tx_cb);usart_async_register_callback(&USART_0, USART_ASYNC_RXC_CB, serial_rx_cb);usart_async_enable(&USART_0);usart_async_register_callback(&USART_1, USART_ASYNC_TXC_CB, serial1_tx_cb);usart_async_register_callback(&USART_1, USART_ASYNC_RXC_CB, serial1_rx_cb);usart_async_enable(&USART_1);
}
/*串口0发送函数***********************************************************************************/
void usart_tx(const uint8_t * tx_buffer,uint16_t len)
{if (len==0){return;}else io_write(&USART_0.io, tx_buffer, len);
}
/*串口1发送函数***********************************************************************************/
void usart1_tx(const uint8_t * tx_buffer,uint16_t len)
{if (len==0){return;}else io_write(&USART_1.io, tx_buffer, len);
}
http://www.xdnf.cn/news/19126.html

相关文章:

  • 大模型后训练——Online-RL实践
  • DistributedLock 实现.Net分布式锁
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径
  • 北斗导航 | 工信部印发《关于优化业务准入促进卫星通信产业发展的指导意见》解析
  • MySQL数据库精研之旅第十三期:吃透用户与权限管理,筑牢数据库安全第一道防线
  • 【MySQL数据库】存储引擎 学习记录
  • 高光谱成像在食品质量和安全检测中的应用
  • 【C++游记】子承父业——乃继承也
  • [p2p-Magnet] 队列与处理器 | DHT路由表
  • iOS文件管理在uni-app开发中的实战应用,多工具解决
  • hive on tez如果是2个大表union会写几次临时文件到hdfs目录,数据量如何计算
  • 密码管理中
  • 水果目标检测[2]:ALAD-YOLO:一种轻便、精确的苹果叶病检测仪
  • 学习Python中Selenium模块的基本用法(7:元素操作-1)
  • 【golang长途旅行第33站】常量------补充知识点
  • golang 12 package 和 module
  • Docker 入门指南:从基础概念到常见命令及高级工具详解
  • C++:知识点小结
  • vue2 watch 的使用
  • 从 WPF 到 Avalonia 的迁移系列实战篇1:依赖属性的异同点与迁移技巧
  • LangChain4j入门一:LangChain4j简介及核心概念
  • Python计算点云的欧式、马氏、最近邻、平均、倒角距离(Chamfer Distance)
  • 嵌入式C语言进阶:高效数学运算的艺术与实战
  • MySQL 8 与 PostgreSQL 17 对比分析及迁移指南
  • 【网络】网络基础概念
  • HarmonyOS安全开发实战:一套好用的数据加密方案
  • mysql mvcc机制详解
  • Java全栈开发面试实战:从基础到微服务架构的深度解析
  • IntelliJ IDEA Debug 模式功能指南
  • 替身演员的艺术:pytest-mock 从入门到飙戏