用 K60 的 UART 串口通信改变程序中的参数值

本文介绍如何利用K60单片机的UART串口通信功能,通过DMA接收上位机发送的字符串,进而改变程序中的参数值。通过中断和DMA设置,实现数据接收与发送,并使用atoi()函数将接收到的字符串转换为整数类型,方便修改PID等参数。
摘要由CSDN通过智能技术生成

平时用单片机做东西免不了要调整一些参数,特别是调 PID 参数的时候,要不停得调整参数。如果一直通过烧程序改变参数的话,难免显得繁琐。因为最近在用 K60,所以今天我稍微研究了一下怎样通过 K60 的串口通信改变参数的值。

因为时间的原因,并没有看得很深入,没怎么看 K60 的底层寄存器,代码是借助拉普兰德的库写的。所以这篇文章就不涉及寄存器方面的东西了。


拉普兰德的例程中有串口中断的例程,但 UART 库函数的功能仅限于接收一个字符,这显然是不够用的,调整参数肯定要得到一个字符串。拉普兰德的库函数里有两种方法可以通过串口通信得到一个字符串。

一种方法是使用 K60 的 FIFO 功能,这种方法我没有细看。我用的是第二种方法,使用 K60 的 DMA 功能。

现在的任务是写出一个最简单的代码,上位机通过串口发送一个字符串给单片机,单片机得到这个字符串,简单处理一下就可以赋给参数值了,现在为了测试先将这个得到的字符串发送给上位机。

因为要用到 UART 功能和 DMA 功能,先定义结构体:

void uart_init()
{
  uart2_init_struct.UART_Uartx = UART2; //使用UART2
  uart2_init_struct.UART_BaudRate = 19200; //设置波特率19200
  uart2_init_struct.UART_RxPin = PTD2;  //接收引脚为PTD2
  uart2_init_struct.UART_TxPin = PTD3;  //发送引脚为PTD3

  uart2_init_struct.UART_RxIntEnable = 1 ;//开接收中断
  uart2_init_struct.UART_TxIntEnable = 1;    //使能发送中断

  uart2_init_struct.UART_RxDMAEnable = TRUE;    //使能接收DMA
  uart2_init_struct.UART_TxDMAEnable = TRUE;    //使能发送DMA
  //配置接收DMA
  uart_rev_dma_init_struct.DMA_CHx = DMA_CH0;                     //选择DMA CH0作为通道
  uart_rev_dma_i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值