STM32F103C8T6制作舵机测试仪详细图文教程 | 定时器触发ADC | DMA传输 | PWM输出 | RTC实时时钟 | USART串口输出 | OLED IIC显示

自主学习STM32已有一周,先实现一个小demo,算是给自己一个动力叭,有目标的学习收获会更多。虽然本科也修了嵌入式课程,但那种走马观花式的学习,最后真正得到的知识实在寥寥无几。个人理解,学习STM32不只是学习编程,更多的是学习查资料、查数据手册、软件的使用和调试方法上,真正需要自己从头造的部分不是很多,吸取前人的经验,搬过来取自己所需即可。用农夫山泉的话来说就是,我们不生产代码,我们只是代码的搬运工!

这次主要跟着正点原子的开发资料进行学习,没有使用战舰开发板,而是使用STM32F103C8T6板子。一是避免自己直接把例程的代码烧进开发板,最后啥也没学到,在不同的板子间移植代码过程中,能够掌握理解更多的基础知识和调试经验;二是这个小板子廉价易得,只要十块钱,和大几百的开发板相比,它体积小、资源可观,很适合我的小项目,以后准备用来制作航模遥控器,敬请关注哈~

1.材料清单

1.STM32F103C8T6蓝色开发板*1(黑色板也可以)

2.USB转TTL模块*1

3. ST-LINK V2仿真器下载器*1(调试STM32性价比极高)

4. OLED屏幕(4管脚)*1

5.10k电位器*1(10k以上都可)

6. 杜邦线、面包板、导线、插针若干

2.电路连接

电位器:GND - PA0 - 3.3V
OLED显示屏:
                GND   电源地
                VCC   接3.3v电源
                SCL   接PB8(SCL)
                SDA   接PB9(SDA)

ST-LINK V2接法:
                GND   电源地
                3V3     接3.3v
                SWCLK 接DCLK
                SWDIO 接DIO
串口USB-TTL接法:
                GND   电源地
                3V3   接3.3v
                TXD   接PB7
                RXD   接PB6
PWM输出:PB5

实物连接图如下:

 

 

3.安装keil5

安装及破解MDK(Keil5)教程 https://blog.csdn.net/weixin_42911200/article/details/81590158

注意要安装Keil.STM32F1xx_DFP.2.3.0.pack支持包,因为我们要用STM32F103C8T6芯片的库函数编写。

库下载地址https://www.keil.com/dd2/Pack/

博主已上传天翼云盘:https://cloud.189.cn/t/vyUBFzyuMBZr(访问码:6sng)

等待网页加载完,在列表里找到Keil,再找STMicroelectronics STM32F1 Series Device Support, Drivers and

4.新建工程

新建keil库函数工程 https://www.cnblogs.com/zeng-1995/p/11308622.html

与链接里面不同的是以下几个设置:

点击图标按钮1,打开Manage Run-Time Environment窗口,Device如下勾选,其他栏与链接中相同;

点击图标按钮2,打开Manage Project Items窗口,Groups和 Files如下设置:

点击图标按钮3,打开Options for Target窗口,点击顶部菜单按钮切换子窗口,依次如下设置:

点击Setting,打开Cortex-M Target Driver Setup窗口,如果SWDIO里面未显示序列号,则电脑需要更新ST-LINK驱动。

解决方法见链接 https://blog.csdn.net/qq_42041980/article/details/92015997

 5.程序实现

控制舵机的PWM:周期20ms,高电平时间0.5ms~2.5ms变化,可控制舵机0~180°的角度变化,即每个高电平时间都对应舵机的一个角度。但航模舵面的实际控制中,不可能有180°变化,所以通用的高电平宽度其实是1ms~2ms。

具体可参考https://www.moz8.com/forum.php?mod=viewthread&tid=82875&highlight=%E8%88%B5%E6%9C%BA%E6%B5%8B%E8%AF%95%E4%BB%AA

控制无刷电调所用的PWM信号高电平时间也是1ms~2ms,所以我们要实现的PWM信号周期20ms,高电平时间1ms~2ms。

  • 我们使用ADC1读取电位器的电压采样值,并从0~4095范围的采样值转换到1000~2000,赋值给PWM输出。
  • TIM2定时触发ADC采样,通过DMA传输给变量
  • 37
    点赞
  • 240
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值