STM32
文章平均质量分 64
qq_40170041
博客就是备忘录,这里主要记录一些学习的内容或者总结
展开
-
C语言中把数字转换为字符串
因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底 是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与short,原创 2024-07-11 16:31:22 · 851 阅读 · 0 评论 -
FreeRTOS开发五、任务状态切换以及空闲任务回收结束的任务
任务结束的时候,一定有其他任务给这个任务进行收尸,这个任务就是空闲任务,空闲任务会将结束的任务的内存等一些资源回收,空闲任务的优先级是最低的,这就会导致其他任务中如果一直保持就绪态和运行态,空闲任务无法运行,所以应该想办法让任务进入阻塞态等,也就是延时使用vTaskDelay。然后就是暂停任务vTaskSuspend,可以自己暂停自己,也可以其他任务暂停自己,这部分会直接导致任务进入暂停状态(suspend),此时任务不占用资源,也就是不占用cpu,这个任务暂停运行了。2、空闲任务回收结束的任务。原创 2024-07-01 23:09:26 · 221 阅读 · 0 评论 -
有人物联的串口服务器USR-TCP232-410S基本测试通信和使用方案(485串口和232串口)
1.将 410S(USR-TCP232-410S,简称 410S 下同)的串口通过串口线(或USB 转串口线)与计算机相连接,通过网线将 410S 的网口 PC 的网口相连接,检测硬件连接无错误后,接入我们配送的电源适配器,给 410S 供电。这里使用的485通信,那么就要配置波特率为115200,网络中的服务器IP为192.168.0.7(默认),端口一定要设置为26(前面网页设置的)点击“搜索设备”当搜索列表中出现410S的设备后,单击搜索到的设备,查看其配置信息(上图为默认配置信息)。原创 2024-06-28 10:59:00 · 417 阅读 · 0 评论 -
FreeRTOS开发四、任务
在裸机系统中,系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务。/* 任务主体,无限循环且不能返回 */for (;;/* 任务主体代码 */我们先回想下,在一个裸机系统中,如果有全局变量,有子函数调用,有中断发生。那么系统在运行的时候,全局变量放在哪里,子函数调用时,局部变量放在哪里,中断发生时,函数返回地址放哪里。原创 2024-06-19 14:17:11 · 310 阅读 · 0 评论 -
FreeRTOS开发三、FreeRTOSConfig.h内容介绍以及分析作用
【代码】FreeRTOS开发三、FreeRTOSConfig.h内容介绍以及分析作用。原创 2024-06-19 13:54:02 · 152 阅读 · 0 评论 -
stm32开发常用的数学函数
在MDK5的安装路径中:D:\MDK5\ARM\ARMCC\include,可以看到很多C库头文件,在程序中只要包含了相应的头文件,编译器就会自动把相应的代码编译链接进去。原创 2024-06-05 11:46:22 · 456 阅读 · 0 评论 -
FreeRTOS开发二、如何使用vTaskDelay对任务延时准确的时间
即使同样的tick,如果系统工作的频率不同,那么其时间也是不一样的,如果A配置的频率是B的两倍,则使用相同tick时,B实际的时间是A的两倍。但是我们更多的是使用物理时间,例如一个简单的翻转,可能需要500ms,而不关心系统到底被配置为多少的频率,这个情况下,我们可以使用FreeROS提供的宏来实现,通常有两种方法,但是本质上是一样的。例如我们上面把500/portTICK_RATE_MS进行展开,其实就是。原创 2024-05-22 08:59:46 · 467 阅读 · 0 评论 -
FreeRTOS开发一、FreeRTOS移植
Source 文件夹:里面包含的是 FreeRTOS 内核的源代码,我们移植 FreeRTOS的时候就需要这部分源代码。Demo 文件夹:里面包含了 FreeRTOS 官方为各个单片机移植好的工程代码,FreeRTOS 为了推广自己,会给各种半导体厂商的评估板写好完整的工程程序,这些程序就放在 Demo 这个目录下,这部分 Demo 非常有参考价值。原创 2024-05-15 09:42:35 · 662 阅读 · 0 评论 -
stm32开发三、GPIO
部分引脚可容忍5V,容忍5V的意思是:可以在这个端口输入5V的电压,也认为是高电平但是对于输出而言,最大就只能输出3.3V,因为供电就只有3.3V具体哪些端口能容忍5V,可以参考一下STM32的引脚定义不带FT的,就只能接受3.3V的电压,这个我们在第一节也讲过在STM32中,所有的GPIO都是挂载在APB2外设总线业的st公司为了省电(低功耗),开发了一套时钟门控技术,必须启动时钟也就是RCC才能使用外设,所以无论使用stm32的任何外设,都需要先设置RCC时钟。原创 2024-05-10 15:52:40 · 497 阅读 · 0 评论 -
单片机开发九、GPIO的推挽、开漏、高阻
单片机GPIO的输出示意图,其实就是内部有两个mos管。转载 2024-05-09 09:12:41 · 135 阅读 · 0 评论 -
stm32单片机开发六、SPI通信协议
上一节看到了,I2C使用上拉电阻,导致了整个电路从低到高电平的时候出现了延时爬升,就会导致I2C的频率不高,一般在100K,告诉400K但是SPI的速率可以达到很高,这就是SPI的优势SS,从机选择线,它可能不止一条,SPI主机表示,有几个从机,就开几条SS,所有从机,一人一根都别抢,需要从机时就控制连接从机的那根SS线,低电平使能,高电平失效,这样就不需要再去弄什么寻址一类的了SPI没有应答这部分,只管发送和接受,至于对面的从机是否存在,SPI是不管的。原创 2024-05-07 11:53:55 · 1010 阅读 · 0 评论 -
stm32单片机开发五、使用I2C连接MPU6050
10轴就是3轴加速度、3轴角速度、3轴磁场强度和1个气压强度任何一种传感器都不能获得精确且稳定的欧拉角,要想获得精确且稳定的欧拉角,就必须进行数据融合,把这几种传感器的数据结合起来,常见的数据融合算法,一般有互补滤波、卡尔曼滤波等I2C的地址为7位,假设这里将他的地址(110 1000)转换为16进制的0x68,一定不要忘记了在传输的时候要将0x68原创 2024-05-05 17:28:34 · 171 阅读 · 0 评论 -
stm32单片机开发五、I2C通信
这就需要首先把每个从设备都确定一个唯一的设备地址,从机设备地址就相当于每个设备的名字,主机在起始条件之后,要先发送一个字节叫一下从机名字,所有从机都会收到第一个字节,和自己的名字进行比较,如果不一样,则认为主机没有叫我,之后的时序我就不管了,如果一样,就说明,主机现在在叫我,那我就响应之后主机的读写操作,在同一条12C总线里,挂载的每个设备地址必须不一样,否则,主机叫一个地址,有多个设备都响应,那不就乱套了吗,是吧。I2C这部分的时序单元可以看我另外一篇博客。如何发出指令,来确定要访问的是哪个设备呢?原创 2024-05-05 14:30:23 · 317 阅读 · 0 评论 -
硬件25、电子原理图中VCC\VDD\VEE\VSS\VBAT等各表示什么意思
5、VBAT是当使用电池时或者其他电源连接到VBAT引脚上的时候,当VDD断电时,可以保存备份寄存器的内容,维持RTC功能,但是当没有使用电池时,VBAT应接到VDD引脚上。9、CC和DD的区别是供电电压和工作电压的区别,通常VCC大于VDD。7、GND通常和大地连接,电动势为0,通常定义为参考电压。3、VSS是公共连接的意思,通常指电路公共接地端电压。4、VEE是负电压供电,场效应管的源极。1、VCC代表了元器件外接电压。8、V和VA的区别,数字和模拟。6、VPP是编程/擦除电压。原创 2024-05-05 08:20:02 · 664 阅读 · 0 评论 -
stm32单片机开发四、USART“串口通信“
使用上面的程序单片机进行串口发送,会发生什么情况?1、串口助手使用hex模式接收2、串口助手使用文本模式接收可以看到打印出来的是文本格式了。原创 2024-04-28 13:38:29 · 462 阅读 · 0 评论 -
stm32单片机开发三、ADC、DMA
再看一下连续转换,扫描模式,与上一个模式相比就是一次转换完成后,立刻开始下一次的转换,和上面这里非扫描模式的单次和连续是一个套路,这就是连续转换,扫描模式,当然在扫描模式的情况下,还可以有一种模式,叫间断模式,它的作用是,在扫描的过程中,每隔几个转换,就暂停一次,需要再次触发,才能继续,这个模式我没有列出来,要不然模式太多了,大家了解一下就可以了,暂时不需要掌握,第三步,配置这里的多路开关,把左边的通道接入到右边的规则组列表里,这个过程就是我们之前说的点菜,把各个通道的菜,列在菜单里。原创 2024-04-28 11:37:59 · 471 阅读 · 0 评论 -
stm32单片机开发二、TIM定时器-内部时钟中断和外部时钟中断、编码器
定时器本质就是一个计数器定时器的功能:1、定时器基本定时的功能,也就是定一个时间,然后让定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的,比如你要做个时钟、秒表,或者使用一些程序算法的时候,都需要用到定时中断的这个功能2、定时器输出比较的功能,输出比较这个模块最常见的用途就是产生PWM波形,用于驱动电机等设备,使用STM32输出的PWM波形,来驱动舵机和直流电机的例子3、定时器输入捕获的功能,使用输入捕获这个模块来实现测量方波频率的例子。原创 2024-04-28 09:33:08 · 345 阅读 · 0 评论 -
stm32单片机开发一、中断之外部中断实验
stm32单片机的外部中断和定时器中断、ADC中断等都由stm32的内核中的NVIC模块控制,stm32的中断有很多中,比如供电不足中断,当供电不足时,会产生的一种中断,这么多中断如果都接在CPU上,或者说CPU去处理,一定会占用过多的资源,所以stm32单片机设计了NVIC去管理这些中断,NVIC有很多输入口,所有的中断都会进入NVIC,NVIC判断每个中断的优先级分配中断的先后顺序,最后将筛选出来的这个中断交给CPU去运行处理,这样CPU只需要去做处理就可以了。原创 2024-04-27 16:27:43 · 1114 阅读 · 0 评论 -
stm32开发三、单片机关键字extern
extern 用于指示变量或函数是在其他文件中定义的,但在当前文件中也要使用它。原创 2024-04-15 16:47:27 · 638 阅读 · 0 评论 -
stm32开发二、stlink烧写和调试
可以看到点击运行单步跳过时,程序运行指针再157行的函数部分,点击运行单步跳过后会跳转到160行进行运行。可以看到点击跳出当前函数,就会直接运行完函数并退出,运行指针会指到下一行。然后可以看到每次全速运行到这里就会停止,并且可以看到val的值进行了取反。(2)单步跳过,不进入函数一步步执行,而是一次将一个函数的运算执行完。在main函数中可以看到这两个函数关系是上下。(1)单步运行,也就是一步一步运行代码调试。(5)打断点,全速运行到断点处查看变量的值。结构体的值展开后可以看到成员的值。原创 2024-04-15 10:50:18 · 293 阅读 · 0 评论 -
stm32开发一、stlink烧写
2、查看是否真的找到了stlink和arm处理器。确定使用的stlink,确定使用SW口进行烧写。1、选择下载器为STlink。一、配置下载工具和属性。启动下载完成后自动复位。原创 2024-04-15 10:29:47 · 211 阅读 · 0 评论