stm32f103 系列,串口有3种工作模式:查询、中断、DMA。本次应用采用DMA中断模式。:DMA是在专门的硬件( DMA)控制下,实现高速外设和主存储器之间自动成批交换数据尽量减少CPU干预的输入,输出操作方式。其USART配置流程:1、串口时钟配置;2、管脚配置(如重映射,管脚模式);3、串口配置;4、DMA配置;中断配置;5、打开串口。
本实验USART(128000 BaudRate,8个数据位,1个停止位,无校验码)功能: 1、开机输出一段字符串; 2、输入 "1" 打开LED,串口输出“LED->ON”; 3、输入 "0" 关闭LED,串口输出“LED->OFF”。
USART程序流程图如图2-10所示。
实验效果图如下。

Quadcopter_usb.rar
软件环境: Keil MDK; 库函数版本:STM32库3.5 。
2、飞行器外部晶振16MHz设通用72MHz芯片主频
1)“Option targets ....” -> "Target" ->"Xtal(MHz)" 设为"16.0"(默认8.0);
2) 修改"#define HSE_VALUE ((uint32_t)8000000)" 成 "#define HSE_VALUE ((uint32_t)16000000)" @stm32f10x.h第119行。
3) 修改"RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9)" 为 "RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL9)" @system_stm32f10x.c第1056行。
对于PWM频率的选择,其实没有统一的标准, PWM的频率和电机感抗和速度响应时间有很大的关系。电机 一般的电机的PWM频率在5KHz-20KHz就足够了。如果电机转速比较高,感抗比较小,可以使用比较高的频率,一般最好不要超过20KHz。其次PWM频率还要根据驱动电路来, 因为一般IGBT最高20K的开关频率,采用3KHz-15KHz的PWM频率, 而MOS 的开关频率比较高,一般在8KHz-20KHz。 但是过高的频率需要专用的驱动电路,不然MOS工作在放大区的时间比较长。 如果电机转速比较低,感抗比较大, 而且又是在做伺服, 那开关频率就需要低一点。
对于电机应用,功率越大,PWM频率越低,最低有500Hz或者1KHz的,在兆瓦级的应用中。普通中小功率的,5KHz-20KHz常见,功率越低,电压等级越低,你所能使用的PWM频率越高。因为低压的开关频率可以做到很高,而高压的却很难快速开关。本次实验PWM频率采用18KHz。
PWM配置(STM32为例)流程如表2-1。
|
步骤 |
说明 |
|
1 |
设定TIM信号周期 |
|
2 |
设定TIM预分频值 |
|
3 |
设定TIM分频系数 |
|
4 |
设定TIM计数模式 |
|
5 |
初始化TIM |
|
6 |
设定TIM的OC模式 |
|
7 |
TIM输出使能 |
|
8 |
设定电平跳变值 |
|
9 |
设定PWM信号极性 |
|
10 |
使能TIM信号通道 |
|
11 |
使能TIM重载寄存器CCRX; |
|
12 |
使能TIM重载寄存器ARR |
|
13 |
使能TIM计数器 |
本实验采用串口控制,其串口指令说明如表2-2所示。
|
序列 |
指令 |
串口响应值 |
说明 |
|
1 |
LED ON |
LED->ON |
彩灯亮 |
|
2 |
LED OF |
LED->OFF |
彩灯熄灭 |
|
3 |
PWM UP |
PWM->UP |
电机加速 |
|
4 |
PWM DN |
PWM->DOWN |
电机减速 |
|
5 |
PWM OF |
PWM->OFF |
电机关闭 |
|
6 |
PWM ST |
PWM Compare Value Compare Value1 Compare Value2 Compare Value3 Compare Value4 |
电机状态; Duty Ratio = Compare ValueX / 1000 |
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| 【分享开发笔记,赚取电动螺丝刀】在音频测试中顺序的调整可改变功效被打赏¥18元 | |
| 【分享开发笔记,赚取电动螺丝刀】点阵显示模块及其应用-----献给新年的小礼物被打赏¥22元 | |
| 基于地奇星开发板的数码管模块显示技术被打赏¥23元 | |
| window下生成compilecommands.json的的方法被打赏¥22元 | |
| 【S32K3XX】GPIO中断配置被打赏¥26元 | |
| 【分享开发笔记,赚取电动螺丝刀】WS2812B的RGB灯介绍以及驱动方法被打赏¥25元 | |
| PTC与NTC功能常规对比被打赏¥14元 | |
| 【S32K3XX】核间通信MU使用被打赏¥27元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于3pin锂电池接口的介绍/使用被打赏¥16元 | |
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
我要赚赏金
