打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EEDrone开源四旋翼从零开始(4)--DEMO开发

本贴来详细介绍下Demo工程的开发过程,Demo是完整功能的基础,也可以用来做测试。这里以UART功能DEMO为例,可以从零开始自己编写,也可以参考官方例程,也可以使用cubemx生成。

       打开CubeMX,选择STM32F767ZITX芯片或者NUCLEOF767开发版,这两者的差别不大,选择开发板会多一些宏定义,然后在左边的串口3如下设置:

     使用外部晶振

     时钟设计如下:

      串口三配置如下:

     CubeMX工程生产设置如下:

      最后点击ProjectàGenerate Code生成工程文件。在生成的工程如下:

       在EEDrone的Example中新建一个文件夹”UART_Test”

       将生成的工程中Src中的文件复制到新建的文件夹中,注意“system_stm32f7xx.c’不要复制,因为都是一样的,这里inc文件夹是可以不复制进来的,因为主工程包含了,最后文件夹文件如下:

     然后使用IAR(推荐使用IAR7.7版本)打开工程,在Example上右击àaddàadd group,填写”UART_Test”如下图:

      在新建文件夹上右击addàadd file,将刚刚的文件夹中的内容全部选中,点击打开。

      然后在”User”文件夹和Example文件夹中其他文件夹都排除编译,在文件夹上右击案后勾上”Eculude from build”,然后ProjectàRebuild all。每次更换Demo都需要重新编译。

        编写代码我推荐使用sourceinside,他能写代码的效率提高不少,当然也可以直接使用IAR,或者其他的软件,这个没有什么问题。sourceinside工程的添加方法就不介绍了,这里介绍个插件与小技巧。SI是不支持标签的,这个有时候会非常不方便,可以使用这个sihook插件下载地址:审核中。。。

直接将插件复制到根目录就好,下面是效果图:

       由于工程中有很多例子,这也就会导致很多的main.c文件和其他的相同名字文件,给搜索造成干扰。SI可以很方便的添加和去除包含的工程文件,Projectàadd and remove project files

如下图:

    现在开始添加代码,首先添加一个全局变量用来存收到的数据:

  1. uint8_t receive;

复制代码

    在uart.c中添加如下两段代码:

  1. #ifdef __GNUC__

  2. /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf

  3.    set to 'Yes') calls __io_putchar() */

  4. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

  5. #else

  6. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

  7. #endif /* __GNUC__ */

复制代码

  1. PUTCHAR_PROTOTYPE

  2. {

  3.   /* Place your implementation of fputc here */

  4.   /* e.g. write a character to the USART3 and Loop until the end of transmission */

  5.   HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);

  6.   return ch;

  7. }

复制代码

     然后添加主函数中断接收代码和一个printf发送:

  1. HAL_UART_Receive_IT(&huart3,(uint8_t *)&receive,1);

  2.   printf("hello");

复制代码

     在main.c主函数外添加一个中断接收回调函数:

  1. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

  2. {

  3.   HAL_UART_Receive_IT(&huart3,(uint8_t *)&receive,1);

  4.    HAL_UART_Transmit(&huart3, (uint8_t *)&receive, 1, 0xFFFF);

  5. }

复制代码

     好啦,大功告成,现在烧录进去后首先会显示“hello”,然后输入什么就会输出什么。如下图:

源码地址:https://github.com/EEDrone/Firmware/tree/V0.01_uart

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【STM32Cube】(六)使用 STM32CubeMX初始化usart(查询发送和查询接收模式)
使用stm32cubemx开发四:串口标准化输出
HAL库UART的几个常用函数讲解+中断处理过程讲解
STM32HAL库与标准库的区别
串口接收不定长数据的几种方法,学会横着走!
STM32 之 HAL库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服