自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 2021-03-29

电机太烫是因为TB6600电流的设置过大,设置为合适的电流档位就可以了

2021-03-29 16:32:48 109

原创 2021-04-02

一开始不转只有震动,更改了电机AB连线,细分改为32电机转动

2021-03-29 15:17:44 90

原创 2021-03-16

要让一个变量在程序运行期间始终存在可以用全局变量和局部static变量全局变量在完成一次完整的动作之后要全部清零或者在使用完之后要清零以便下次使用

2021-03-16 10:42:24 117

原创 static修饰全局局部变量函数

1.static修饰全局变量特点如下:1)存储区:静态存储区静态存储区在整个程序运行期间都存在;2)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用);好处:1)不会被其他文件所访问,修改;2)其他文件中可以使用相同名字的变量,不会发生冲突。2.static修饰局部变量在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。特点如下:1)存储区:有栈变为静态存储区rw da

2021-01-29 10:34:49 599

原创 局部变量

写程序过程中两次碰到同样的问题,局部定义的变量使用完之后就释放导致无法获得其变量值。解决方法:养成良好的编程习惯

2021-01-29 09:43:34 74

原创 枚举变量的定义赋值使用

定义:typedef enum {A1,A2,A3,A4 = 10,A_END}A;如果A1赋值为5,则下列依次递增1,即A2等于6,A3等于7;由于A4赋值为10,所以A_END等于11如果A1不赋值,A1默认为0,下列依次递增1赋值:A=A1使用:if(A==A1)printf……...

2021-01-14 10:52:40 1105

原创 attribute(at(地址));

attribute(at(地址));将数据定位到flash const

2021-01-05 17:27:40 344

原创 32位系统4字节对齐效率最高

地址/4=032位系统4字节对齐效率最高。执行速度最快。举例:Struct foo{short s;int n;};Struct foo bar;bar的地址为0x12345670要读取n的值不按4字节对齐要执行两次读取操作0x12345670s1s2n1n20x12345674n3n4...

2021-01-05 17:22:39 610

原创 内存地址的计算方法

内存地址的计算方法内存是按字节编址的,所以单位是字节,1字节等于8位。

2021-01-05 15:46:53 1459 1

原创 接上条博客

之前对各种存储器一直不太清楚,今天总结一下。存储器分为两大类:ram和rom。ram就不讲了,今天主要讨论rom。rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了prom,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEP

2021-01-05 12:03:07 61

原创 Flash和eeprom

FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。.

2021-01-05 12:02:05 144

原创 Stm32l010

供电3,3vjlink识别不到芯片。降低了电压就能识别到芯片了。不知道是blink问题还是芯片本身问题

2021-01-05 11:56:04 599

原创 C语言中static修饰全局或局部变量

一、static修饰全局变量:当一个进程的全局变量被声明为static之后,它的中文名叫静态全局变量。静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。根据这个原理,我们可以在多个文件中定义相同名字的全局变量而不影响,可以重名。二、static修饰局部变量:static局部变量中文名叫静态局部变量。 1)位置:静态局部变量被编译器放在全局存储区.data(注意:不在.bss段

2021-01-05 11:14:17 4306

原创 avr单片机

在大约一年前看过有关avr 单片机的一本书,感觉对硬件的底层操作更加直观。今天浏览了用户手册。感觉有些概念解释的更加清晰明了。

2020-12-24 12:39:49 411

原创 2020-12-23

一、全局变量和局部变量1、局部变量指在函数内部定义的变量 作用域为定义局部变量的函数 也就是说他只能在定义他的函数中使用最值得注意的是 只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则起变量失效。2、全局变量在程序执行的过程中一直有效 。不会随一个模块的退出而失效...

2020-12-23 17:23:27 59

原创 2020-12-21

看了一下很久以前调过的代码,有了一些新的收获,对于代码的结构有了更清晰的认识,发现之前做的太快了,并没有留下任何深刻的印象。

2020-12-21 12:10:31 66

原创 stm32l0低功耗奇葩芯片

听嵌入式家人说带4的芯片一大堆问题。果然是这样哈。一开始就碰到一个问题。用的hal库。参考电压pb0pb1输出不正常。刚开始配的时候还时有时无。之后就一直出不来了。哎。好在硬件有先见之明。输出不就直接把电阻移到另一个地方就有了需要的电压。这个芯片太蠢了。一个低功耗的串口两个引脚隔得老远。好在adc能用。最后就来到了头疼的iic了。听网上说一大堆硬件iic不好用。那就先用模拟的。可是这个芯片是个低功耗芯片。没有hse。内部最大时钟32m.他妈的。iic调半天没出来。最后用了hal库。且看调得出来不。不行我就要

2020-12-18 08:19:56 514

原创 纹波的处理

突然想起一个在学校做过的开关电源项目纹波的处理。要求10mv.怎么办?网上查一下。加lc滤波呗。一级不行加两级。成功将纹波降到10mv一下。

2020-12-18 08:00:16 629

原创 接上

打印乱码怎么办?配置寄存器,比如pwm要输出10hz,72m的主频必须变为9m,这样不就可以计算出寄存器的值了吗?可是哪有这么好的事情,还是乱码。怎么办?有问题是需要解决的。那么为了能够打印输出。我不用定时器输出1hz的pwm了。改用延时翻转io来得到电机的驱动。首先我用systick实现延时。发现卡住了。不行就用while循环实现。发现这么做都是不行的。最后想到哎呀。用两个单片机一个输出pwm,一个采集转速脉冲打印。问题解决。当然了这样的问题或许也可以用类似于avr单片机来解决。因为这个单片机各个模块之间

2020-12-18 07:42:56 128

原创 2020-12-18

最近用stm32输出pwm 驱动电机,并采集电机输出的脉冲信号来计算电机转速,pwm的频率太低比如1hz不好采集,,因为还要打印输出转速

2020-12-18 07:04:28 185 1

原创 定时器pwm 输出与一段脉冲时间计算采集

最近用stm32输出pwm 驱动电机,并采集电机输出的脉冲信号来计算电机转速,pwm的频率太低比如1hz不好采集

2020-12-18 07:02:49 468 1

转载 STM32中模块时钟

STM32中各个模块都有自己的时钟,当使用相应的模块时首先记得把此模块时钟开启本次学习使用标准固件库3.3.0好了,看明白上图咱就开始吧:void RCC_Configuration(void){ErrorStatus HSEStartUpStatus;//SystemInit(); //完全可以使用此函数配置,但是为了学习咱先不用RCC_DeInit();

2020-12-04 09:39:17 624

原创 stm32flash存储掉电不失数据

先页擦除再写入写入范围:0x08000000+程序大小<写入地址+写入字节〈flash大小程序大小: program size:code:1032rodata:336rwdata:12zidata:1836code 大小即为程序大小

2020-12-02 11:46:49 2123

原创 stm32uint8_t数据

uint8_tuint16_tuint32_tuint64_t1,2,4,8字节地址加一1个字节8位数据

2020-12-02 10:11:55 1576

原创 pwm频率

2020-11-25 09:56:53 918

原创 无刷有刷电机区别

一、调速方式的区别实际上两种电机的控制都是调压,只是由于无刷直流采用了电子换向,所以要有数字控制才可以实现了,而有刷直流是通过碳刷换向的,利用可控硅等传统模拟电路都可以控制,比较简单。1、有刷马达调速过程是调整马达供电电源电压的高低。调整后的电压电流通过整流子及电刷地转换,改变电极产生的磁场强弱,达到改变转速的目的。这一过程被称之为变压调速。2、无刷马达调速过程是马达的供电电源的电压不变,改变电调的控制信号,通过微处理器再改变大功率MOS管的开关速率,来实现转速的改变。这一过程被称之为变频调速。.

2020-11-24 16:55:57 589

原创 有刷无刷电机区别

1、有刷电机  电机工作时,线圈和换向器旋转,磁钢和碳刷不转,线圈电流方向的交替变化是随电机转动的换相器和电刷来完成的。在电动车行业有刷电机分高速有刷电机和低速有刷电机。有刷电机和无刷电机有很多区别,从名字上可以看出有刷电机有碳刷,无刷电机没有碳刷。  有刷电机有定子和转子两大部分组成,定子上有磁极(绕组式或永磁式),转子有绕组,通电后,转子上也形成磁场(磁极),定子和转子的磁极之间有一个夹角,在定转子磁场(N极和S极之间)的相互吸引下,使电机旋转。改变电刷的位置,就可以改变定转子磁极夹角(假设以定子的

2020-11-24 16:46:43 461

原创

字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。ARM 采用的是32位架构.ARM 约定:Byte : 8 bitsHalfword :16 bits (2 byte)Word : 32 bits (4 byte)...

2020-11-24 14:05:25 204

原创 今天换芯片时又忘了一个定义,出错: Error: L6218E: Undefined symbol assert_param (referred from misc.o).

今天换芯片时又忘了一个定义,出错:Error: L6218E: Undefined symbol assert_param (referred from misc.o).之所以不记成 Error: L6218E: Undefined symbol assert_param (referred from xxx.o). 而要把misc亮明出来,是我第一时间感觉到这个错误肯定和库函数整体有关,肯定不是一个文件的问题;通过翻译好理解:未定义断言符号;但是直接在misc.c/.h里加断言,肯定在改正后还会继续

2020-11-20 10:06:03 1700

原创 error67

使用KEIL 5发现用keil 5 打开一些比较早的工程时,会出现大量 error: #67: expected a “}” 错误:… Keil\STM32Fxx_DFP\2.2.0\Device\Include\stm32f10x.h(303): error: #67: expected a “}”去除preprocessor symbols 中的定义

2020-11-20 09:59:33 342

原创 热敏电阻公式精度验证

NTC 热敏电阻温度计算公式Rt = R EXP(B(1/T1-1/T2))

2020-11-11 09:30:32 413

原创 error: #268: declaration may not appear after executablestatemen

使用c99模式

2020-11-10 17:06:58 1054

原创 ln,lg

在C语言中定义的函数和数学上定义的函数有所区别:C语言中只定义的两个函数:(1)y=log(double x)(2)y=log10(double x)第(1)个代表数学式中的ln,第(2)个代表数学式中的 lg;而数学上要求loga(b) (a不为e和10),可用换底公式表示为log(b)/log(a)(或者 log10(b)/log10(a))。注意一点的是要包含头文件math.h...

2020-11-09 13:13:48 384

原创 float和double的区别

1.C中float和double的区别float:单精度类型,最多可以精确到小数点为7位,占用内存为4字节,占用内存的消耗速度为double的一半double:双精度类型,最多可以精确到小数点为16位,占用内存为8字节,占用内存的消耗速度为float的两倍一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。...

2020-11-09 11:54:41 334

原创 error: #268: declaration may not appear after executable statement in block

Enable c99模式

2020-11-09 11:48:25 294

原创 ..\usart\usart.c(48): error: #260-D: explicit type is missing (“int“ assumed)

把函数_sys_exit(int x)加上返回值void

2020-11-09 11:46:58 1122

原创 ADC

ADC单通道:要求进行一次ADC转换:配置为单次模式使能,扫描模式失能。这样ADC的这个通道,转换一次后,就停止转换。要求进行连续ADC转换:配置为连续模式使能,扫描模式失能。这样ADC的这个通道,转换一次后,接着进行下一次转换,不断连续。ADC多通道:要求进行一次ADC转换:配置为单次模式使能,扫描模式使能。这样ADC的多个通道,按照配置的顺序依次转换一次后,就停止转换。要求进行连续ADC转换:配置为连续模式使能,扫描模式使能。这样ADC的多个通道,按照配置的顺序依次转换一次后,接着进行下一次转

2020-11-07 21:10:32 165

原创 STM32CUBEMX实现PRINTF

一般情况下,用一个串口打印的话,重写一下fputc()函数,就可以了,keil选项里面一定要勾上uUse MicorLIB#include <stdio.h>int fputc(int ch, FILE *file){return HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);}这样就可以在包含头文件stdio.h直接使用printf。## STM32CUBEMX实现PRINTF...

2020-11-07 21:04:56 1320

原创 stm8s stvd 编译出错

stm8s stvd 编译出错https://blog.csdn.net/u012388993/article/details/75400111错误如上解决最后一个问题后就可以了欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改...

2019-06-14 14:02:06 663

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除