4290|3

655

帖子

30

TA的资源

版主

楼主
 

EEDrone开源四旋翼从零开始(4)--DEMO开发 [复制链接]

本帖最后由 lb8820265 于 2017-1-1 23:04 编辑

      本贴来详细介绍下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”,然后输入什么就会输出什么。如下图:

最新回复

必须顶        详情 回复 发表于 2017-9-17 15:32

赞赏

1

查看全部赞赏

点赞 关注
个人签名QQ:252669569
 

回复
举报

2721

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
能跟着做就好了
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
顶顶顶,mark~
个人签名HELLO_WATER
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

4
 
必须顶      
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表