- 博客(67)
- 收藏
- 关注
原创 [stm32f407]测速方式:TIM+EXTI,TIM编码器
关联TIM3与NVIC,TIM3 产生中断时,NVIC就知道需要交给EXTI1_IRQHandler()处理中断。注意:SYSCFG负责为外部中断(EXTI)提供配置选项,因此在配置外部中断时,需要先使能SYSCFG的时钟;此方式需要频繁中断,占用CPU资源,不适合高频场合;方式1:TIM+EXTI。
2024-07-13 17:10:19
154
原创 [stm32f407]stm32f407DMA使用
DMA_BufferSize为需要转运的数据量,如DMA_BufferSize=3则仅转运前三个数据“012”,DMA_BufferSize=7则转运“012aaaa”;函数DMA_SetCurrDataCounter()与DMA_BufferSize起一个作用,可不用。3.开启串口DMA通道:USART_DMACmd();为什么内存到内存实际上是Flash到SRAM?1.初始串口:Serial_Init();DMA_Mode_Circular如何停止?2.初始DMA:DMA_init();
2024-06-29 16:23:28
171
原创 【stm32】DMA基础
自动重装器:计数器减小到0,重装为初始值;如果不重装则为单次模式,如果重装则为循环模式。M2M:用于选择硬件(如ADC转换完成,串口收到数据)或软件触发(存储器到存储器)ADC连续扫描时,DMA自动重装,ADC下一轮转换时,DMA进行下一轮转运;传输计数器:初始值为5,转运一次减小一次,直到0;3.使用DMA_Cmd()使能DMA;小数据转到大数据里,大数据高位会补零;大数据转到小数据里,大数据高位会舍弃;ADC单次扫描时,DMA不用自动重装;外设地址不自增,存储器地址自增;1.计数器数值>0;
2024-05-28 10:07:26
186
原创 [freertos]vTaskDelay()和vTaskDelayUntill()区别理解
延时时间未包含线程当前循环任务逻辑,一旦当前循环被更高优先级任务或中断抢占,下一次循环的开始时间会被推迟;所以需要精确周期性执行的任务,一般使用vTaskDelayUntill(),延时时间包含了线程当前循环任务逻辑,所以下次循环的开始时间依然固定;理解整理出来,代码贴到下面,自己绘制关系图,方便理解。
2024-04-02 10:23:19
275
原创 [freertos]freertos移植到工程项目
打开portable-RVDS-ARM_CM3,拷贝port.c和portmacro.h到port文件夹。操作系统源码文件portable里所有heap文件(内存管理文件)拷贝到工程文件创建的port文件夹。操作系统源码文件include里所有.h文件拷贝到工程文件创建的inc文件夹;在freertos文件夹里创建inc,port,src文件。在自己的工程文件夹创建文件夹"freertos"
2024-02-11 21:06:20
376
原创 [c++]public,private运用范围简述
private定义的变量和函数只能在类内部使用;public定义的变量和函数可以从任何地方访问。
2024-01-23 15:01:39
361
原创 [数据结构]实现链表的反转
思路:创建一个新链表,从原有链表left开始取出数据元素,不断头插到新链表。需求:实现指定范围left到right之间链表的反转。
2024-01-13 22:15:53
309
原创 [数据结构]链栈的创建,入栈和出栈
栈是一种在栈顶压入和弹出的数据结构,所以只在一端进行操作.为了减小遍历开支,所以链栈一般在首元节点处进行插入(入栈).
2024-01-05 23:12:56
706
1
原创 [C语言]负数位运算(&,^,|,~)
原码 反码 补码。注:取反的时候符号位不变,运算的时候符号位要参与运算。(11) 补码符号位为0,即与反码,补码相同了。
2023-12-27 15:03:15
456
原创 [数据结构]单链表的创建,插入及删除(更新ing)
mov为一个辅助指针,用于将链表尾节点的指针域next指向新增节点的地址.search为一个辅助指针,用于遍历链表各节点地址,打印各节点数据;ptr为头指针,指向头结点地址,即该指针变量的值为头结点地址;
2023-12-26 17:31:48
427
原创 [C语言]异或运算^简述
a^a=0 (0b 0000 0000):相同变量异或运算=0。0x0f=5 (0b 0000 0101): 跟1位异或运算即按位取反。a^0x00=10(0b 0000 1010):跟0位异或运算即不变。两个变量之间异或运算时,其二进制位相同取0,不同取1.
2023-12-24 18:20:11
458
原创 [C语言]return,break,continue
continue:终止本次循环,继续当前这层循环 return 跳出整个函数;break:用于退出当前这一层循环;return:跳出整个函数。
2023-12-22 15:11:47
388
原创 [stm32]stm32使用过程debug记录,持续更新ing
二极管没有闪烁,如果不是其本身损坏,只能是没有在USB端口接收到高电平或者没有从stm32方向接收到低电平(数据传输).使用万用表测试后可知能够从USB端口接收到高电平,所以只能是没有接收到低电平.继续使用此方式测试连接线端口与stm32输出引脚,蜂鸣档没有响声,即没有连通,插接板连接不稳定;思路:闪烁灯实际上为一个二极管,CH 插入电脑USB接口时,RX处于高电平,当数据传输时,拉低电平导致其闪烁;summary:不要使用插接板,至少用焊接连接,焊接过程注意用万用表蜂鸣档检测其是否虚焊.
2023-12-21 21:02:07
836
原创 软件编码标准[笔记]
多重循环时,最长循环放在里层,最短循环放在外层,减小循环之间切换的次数;如循环内存在逻辑判断if,且循环次数多,则考虑if放到循环外面;三条以上的逻辑判断,考虑用switch代替if else;命名时变量尽量不出现编号,如value1,value2;#define 定义的宏必须大写命名;函数名首字母必须大写;全局变量名称全部大写;
2023-12-20 09:21:03
374
原创 [C语言]左移运算符(<<),右移运算符(>>)
左移k位:等效于数据*2^k,即乘以2^k;左移k位:等效于数据/2^k,即除以2^k;左移k为:等效于数据*2^k,即乘以2^k;当移动数据为负数时,符号位位置不变。右移k为:等效于数据/2^k。
2023-12-19 17:07:55
396
原创 [c++]常用关键字cin,cout,endl的使用
如果不用"using namespace std;黄色框:先输入10,[回车]/空格输入字符。endl为换行的作用,
2023-12-18 17:57:13
453
原创 [C语言]sizeof与strlen区别
sizeof()为操作符,不是函数,可用于计算变量,数据类型,或对象占用的空间(字节数);strlen()为一个函数,且仅用于计算字符串长度;
2023-12-15 14:00:47
341
空空如也
EEPROM,软件i2c
2024-07-24
stm32f407 EEOPROM读写
2024-07-21
DMA实现USART到内存数据转运
2024-07-14
stm32f407使用DMA问题
2024-06-23
测距传感器数据手册i2c
2024-05-05
freertos函数xTaskNotifyWait报错
2024-03-26
freertos高优先级任务抢占低优先级任务时机
2024-03-18
freertos二值信号量任务之间通信时串口无输出
2024-02-16
freertos任务执行时间
2024-02-12
stm32到dsp学习路线?
2024-01-26
负数的异或运算为什么出错
2023-12-25
链表创建为什么需要二级指针?
2023-12-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人