1 Star 1 Fork 2

shentq / ebox_stm32f103RCT6_VS

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
README.md 7.72 KB
Copy Edit Web IDE Raw Blame History

ebox_stm32f103RCT6_VS

注意!!更换为stm32f103C8T6配置好的ebox,visual studio项目,方便以后使用 如果要设置为其他型号:

  1. 更换startup文件
  2. 更改编译器define
  3. 更改debug目标型号

vs工程在ebox_stm32f103RCT6_VS/ebox_stm32f103RCT6_VS/ebox_stm32f103RCT6_VS文件夹下

工程使用stm32md的startup文件,更改型号时注意更换该文件

包含驱动

逻辑器件

  • 74HC595:移位寄存器

储存

  • E2PROM
    • AT24C02
  • Flash
    • AT45DB
    • w25x16
  • RAM
    • FM25V
  • SD/mmc
    • mmc_sd

输入设备

  • 按键
    • Button
    • key_dm
  • 矩阵键盘
    • TM1638:带键盘扫描接口的LED驱动控制专用电路
  • 四线电阻屏
    • resistive_touch_screen:基于ADC的四线电阻屏驱动

输出设备

  • 显示屏
    • FT800
    • lcd_1.8
    • LCD1602
    • Nokia5110
    • OLED
    • OLED_ssd1306
  • LED
    • colorled
    • LED
    • led_segment:数码管,使用74hc595
    • TM1638:带键盘扫描接口的LED驱动控制专用电路
    • ws2812:内置IC串行RGBLED
  • OSD
    • Max7456:单通道、单色随屏显示(OSD)发生器,内置EEPROM
  • GPIO
    • parallel_gpio:8位并行输出,可以组合任意端口
  • uart_vcan:配合山外多功能调试助手的串口发送类

传感器

  • 湿度传感器
    • dht11
  • 温度传感器
    • ds18b20
  • 尘埃传感器
    • GP2Y1051
  • 红外遥控
    • ir_decoder
    • ir_encoder
  • 陀螺仪
    • MPU6050
    • L3G4200D
    • MPU9250AHRS:基于AHRS算法的9250驱动
  • 电子罗盘
    • lsm303dhlc
  • ADC
    • LTC1446:12位逐次逼近式工作的A/D转换器
  • 距离传感器
    • ultrasonic_wave:超声波
    • ultrasonic_wave_uart:超声波,基于串口,带有中断绑定功能

传输

  • 2.4G无线
    • NRF24L01
  • 数传
    • si4432:低于1GHz频段的无线数传芯片
  • 以太网
    • w5500:全硬件TCP/IP嵌入式以太网控制器
  • 串口
    • uart_string:具备字符串buffer的uart类,基于Uart
    • uart_num:用于在两片单片机之间通过串口传输数据
  • 433Mhz无线
    • sx1278

RTC(实时时钟)

  • ds3231:i2c

正交编码器

  • encoder
  • encoder_exti:旋转正交编码器。基于外部中断
  • encoder_timer:用官方库配置定时器实现的正交编码器,AB相上下沿触发
  • encoder_motor:用encoder_timer实现的直流有刷编码器电,三种控制方式,PID位置、速度控制和无控制

电机

  • tb6612fng:有刷电机双向驱动
  • servo:舵机
  • AccuratePwm:Pwm:继承自ebox Pwm的精确占空比Pwm类,覆盖原set_frq函数,直接对寄存器进行操作,并且在更改预分频系数前暂存计数器的值,解决了ebox_pwm在改变频率时相位变化的问题!

控制

  • greg::PID:绝对式PID
  • sky::PID:积分分离式绝对PID

utility(有用的东西)

信号处理

  • signal_stream:用circle buffer实现的试试信号处理类,仅做信号存储,通过继承或实例化实现信号处理函数

存储

  • ringbuf:队列,先声明buf数组,传入buf指针使用
  • heap:实现malloc函数
  • list:链表
  • WString:字符串类

时间

  • calendar:日历

显示

  • color_convert:hsv、rgb等色彩空间转换

通信

  • crc:crc循环校验

如何配置开发环境?

以下所有程序均安装在默认位置

安装Jlink驱动

安装keil5并破解

  1. 安装stm32的pack和CMSIS

安装visual studio 2015

  1. 选择自定义
  2. 包含visual c++

安装VassistX

  1. 破解目录C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\14.0
  2. 复制dll文件覆盖

安装VisualGDB

  1. 安装visualGDB-5.1r6,Quick Install
  2. 打开一次visualstudio
  3. 双击reg添加注册表
  4. 复制activation.key到C:\Users\用户名\AppData\Local\VisualGDB
  5. 复制VisualGDB.exe文件到C:\Program Files (x86)\Sysprogs\VisualGDB

打开VS,弹出VisualGDB初始设置

  1. 默认打开clang intellisense
  2. 提示检测到visual assist X,选择用

打开工程编译成功,但有波浪线?intellisense没有正常工作?

  1. 最后发现全新安装的keil5在C:\Keil_v5\ARM下缺少CMSIS文件夹,该文件夹下的文件在工程中被包含了
  2. CMSIS文件夹怎么获取?下载安装Cortex Microcontroller Software Interface Standard(CMSIS)包,(最新为5.0.1版),并安装
  3. keil本身自带CMSIS,但是在C:\Keil_v5\ARM\Pack\ARM\CMSIS<VERSION>\CMSIS\Include文件夹下,因此在工程的include设置中添加此路径可以解决这个问题
  4. keil的CMSIS路径带有版本号,不同版本其路径不同,为了适应不同的开发环境,建议将CMSIS文件夹统一复制到C:\Keil_v5\ARM文件夹下,这样就能杜绝后患

如何将工程搬移到visualGDB上?

参考官方教程

导入keil工程目录

  1. 文件扩展名必须小写
  2. 导入工程文件夹时去掉原工程没有导入的c/cpp文件,避免include未设置在包含路径内的h文件

设置编译器、链接器flag

  1. COMMONFLAGS去掉--split_sections,否则会报错
  2. 改为--list "$(BINARYDIR)\ebox.map",将输出内容保存到Debug文件夹
  3. 去掉--scatter ".\Objects\ebox.sct",否则会报错
  4. LDFLAGS需要添加--ro-base--rw-base等flag,这些设置在keil的项目设置的linker选项卡下

设置包含目录

  1. 项目的visualGDB propoties的makefile settings中也需要设置include,否则intellisense无法正常
  2. 在需要链接dll文件的情况下,需要再makefile settings中设置additional linker inputs

设置debug settings

  1. 配置j-link时注意手动选择设备类型
  2. 下载报错:Cannot resolve the address of _estack. Skipping stack pointer validity check.,可以在debug settings中取消勾选validate stack pointer when starting debugging选项解决。

其他

  1. 全局变量初始化为-1导致程序运行失败,要按照教程后修改Makefile,将ifeq ($(TARGETTYPE),APP)...endif替换为
ifeq ($(TARGETTYPE),APP)
ROM_SECTION_NAME := ER_RO
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS)
    $(LD) -o $(@:.elf=.axf) $(LDFLAGS) $(START_GROUP) $(all_objs) \
      $(LIBRARY_LDFLAGS) $(END_GROUP)
    $(FROMELF) --bin --output $(@:.elf=.bin) $(@:.elf=.axf)
    $(OBJCOPY) --remove-section $(ROM_SECTION_NAME) \
        --add-section $(ROM_SECTION_NAME)=$(@:.elf=.bin) \
        --set-section-flags \
        $(ROM_SECTION_NAME)=CONTENTS,ALLOC,LOAD,READONLY,CODE \
        --change-section-address $(ROM_SECTION_NAME)=0x08000000 \
        $(@:.elf=.axf) $@
endif
  1. makefile,.mak文件中使用\进行换行时,后面不能有包括空格在内的任何字符

visualGDB使用教程

Comment ( 0 )

Sign in for post a comment

C
1
https://gitee.com/shentqlf/ebox_stm32f103RCT6_VS.git
git@gitee.com:shentqlf/ebox_stm32f103RCT6_VS.git
shentqlf
ebox_stm32f103RCT6_VS
ebox_stm32f103RCT6_VS
master

Search