DMA,全称Direct Memory Access,即直接存储器访问。
DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
具体关于DMA的介绍请看参考博客内容;
首先打开stm32cubeMX,点击新建工程,选择好芯片,我这里选择的是stm32f103c8,选择好后双击打开即可;
①时钟设置
点击RCC,设置高速外部时钟HSE 选择外部时钟源;
首先在keil中打开刚刚导出的工程,如下图所示:
/* USER CODE BEGIN Init */
uint8_t Senbuff[] = ' hello windows!!!'; //定义数据发送数组
/* USER CODE END Init */
然后在其中的while循环中添加以下代码:
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
添加完成后编译没有错误;
对于USB-TTL来说,USB-TTL身上有五个管脚,分别是5V电源管脚、3.3V电源管脚、TXD(数据传送)管脚、RXD(数据接收)管脚、GND管脚
主要连接方式为:
PA9—RXD
PA10—TXD
3.3V电源管脚和GND管脚接到芯片上的对应位置即可,芯片上的GND接口也需要和面包板的负极相连接;
还有就是开发板的BOOT配置,将板子上的跳线帽进行以下设置,表示转化为系统存储器模式;
BOOT0——>1 BOOT1——>0
首先,打开烧录软件mcuisp,将USB-TTL串口接入电脑,点击搜索串口即可看到接入的USB串口,然后将传输速率设置115200bit/s;
接下来,找到刚刚在keil中生成的HEX文件,点击“读器件信息”,右侧状态栏里显示一切准备就绪后,就可以点击“开始编程”进行烧录了;
烧录完成后打开串口调试助手,同样搜索我们的串口,然后把HEX文件添加进去如下图所示:
使用串口DMA收发数据大大节省了CPU的资源,使数据能更快传输。
https://blog.csdn.net/as480133937/article/details/104827639/
联系客服