
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 |

回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |