![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 63
此专栏用于存放STM32开发过程中的相关知识
Pluto__xu
这个作者很懒,什么都没留下…
展开
-
STM32提高程序运行效率的方法
而局部变量大多定位于MCU内部的寄存器中,在绝大多数MCU 中,使用寄存器操作速度比数据存储器快,指令也更多更灵活,有利于生成质量更高的代码,而且局部变量所的占用的寄存器和数据存储器在不同的模块中可以重复利用。通常使用自加、自减指令和复合赋值表达式(如a-=1 及a+=1 等)都能够生成高质量的程序代码,编译器通常都能够生成inc 和dec 之类的指令,而使用a=a+1 或a=a-1之类的指令,有很多C 编译器都会生成2~3个字节的指令。生成的代码与源代码密切相关,但生成的代码要多得多,包括死代码。原创 2023-01-13 19:26:19 · 3694 阅读 · 0 评论 -
STM32程序仿真正常,脱机程序跑飞或不跑
测量电压后发现,带负载时稳压模块输出只有4V,而空载是可以输出5V的,说明负载电流太大(除了主控板还接了很多其他5V供电的模块),稳压模块输出不足导致电压被拉低到4V,经控制板降压后给芯片供电仅有3V,芯片不能正常工作。(1)查阅资料时发现,仿真器USB端拔掉,而另一端连接在控制板上时,有可能导致程序无法正常运行,原因为单片机复位引脚被仿真器内部拉低,导致程序一直在复位(我的不会有这个问题)(1)首先测试复位电路,发现复位按键损坏,更换之后仍然存在此问题,复位电路不是导致程序跑飞的根本原因。原创 2023-01-13 18:23:04 · 2807 阅读 · 0 评论 -
STM32+HAL库移植FreeRTOS
使用STM32CubeMX创建裸机工程:这里我是用的芯片是STM32F103RBT6,时钟主频为72MHz,配置时钟树:配置调试串口1:配置两个LED灯:由于FreeRTOS使用系统嘀嗒定时器当作心跳,HAL库也使用了这个定时器当作超时计数用,FreeRTOS和HAL库不能同时使用SysTick定时器,所在在这里将HAL库的定时器改为其他的定时器,我改成了定时器4:配置中断,注意这里一定要选择组4,也就是全部为抢占优先级:输出工程:FreeRTOS源码官网下载地址:https://www.f转载 2022-10-26 18:03:16 · 2442 阅读 · 1 评论 -
HAL库STM32实现串口打印
将以下代码加入mian.c中{return ch;}测试while(1) {/* USER CODE END WHILE */ printf("Z测试\n");原创 2022-10-26 17:47:39 · 1515 阅读 · 0 评论 -
STM32实现编码器电机【速度与位置环闭环控制】
电机类型:520编码器电机(12V 110RPM 减速比90)控制芯片:STM32F103ZET6。电机驱动:TB6612。原创 2022-10-15 22:19:01 · 8860 阅读 · 12 评论 -
STM32hal库驱动数字舵机
一、简介常用数字舵机的控制一般为周期20ms,在0.5-2.5ms之间为可控范围,对应占空比为2.5%-12.5%二、CUBE配置2.1配置定时器通道定时器通道设置为PWM Generation2.2配置参数设置PSC与ARR寄存器,周期为20ms,Mode设置为PWM mode 2周期计算公式:周期=1/(主时钟频率/PSC/ARR)mode1与mode2的区别:mode1:向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,原创 2022-05-08 14:41:02 · 2140 阅读 · 0 评论 -
STM32使用正点原子无线烧录器无线查看数据波形
所需资源硬件:正点原子无线烧录器软件:MiniBalance波形显示上位机CUBE配置配置串口使用CUBEMX配置串口,默认使用串口1,波特率为1152001.将串口模式配置为Asynchronous2.波特率设置为115200配置定时器配置定时器频率为1kHz,并打开中断。频率计算公式:频率=主时钟频率/预分频系数(PSC)/自动重装值(ARR)1.设置时钟源将时钟源设为Internal Clock2.设置频率3.打开定时器中断代码实现1.在中断回调函数中进行计原创 2022-05-08 13:15:05 · 2184 阅读 · 2 评论