- 博客(59)
- 收藏
- 关注
原创 STM32 bit-band位带操作
如果在裸机开发中,位带操作相比于直接的读-改-写操作除了访问速度快一点以外好像也没有什么可以说的了,但是如果在带操作系统的开发中,多任务并发运行的时候就有可能在任务切换的过程中发生不可预料的问题,而位带操作由于是属于硬件完成的不可被异常打断的操作(原子操作),所以相对于读-写-改的操作模式的话会更安全些。另外,由于位带操作异常不可打断(原子操作),在带操作系统的开发中出于安全性考虑可以使用位带操作。式中:m为位带区的地址(0x2000,0000~0x200F,FFFF),n为位带区对应字节的第0~7位,
2022-11-29 23:29:33
1685
转载 assert_param函数的用法
注意:assert_failed()函数一般在代码调试时使用,可以帮助开发者检查输入参数无效的错误,但由于assert_failed()函数会影响代码执行效率,在程序release时,需要屏蔽掉,将宏定义USE_FULL_ASSERT注释即可。要使assert_failed()函数生效,需要宏定义USE_FULL_ASSERT,并且包含头文件stm32f0xx_conf.h;如果USE_FULL_ASSERT没有宏定义,则执行((void)0),即什么都不做。
2022-11-29 16:55:36
860
原创 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)
果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优。果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感。
2022-11-02 12:47:50
6797
8
原创 萤火虫(FA)算法(附完整Matlab代码,可直接复制)
在萤火虫优化算法中,萤火虫发出光亮的主要目的是作为一个信号系统,以吸引其他萤火虫个体。
2022-09-08 13:08:05
12338
29
原创 STM32基本定时器TIM6、TIM7
STM32F10XXX定时器资源:STM32F10XXX系列包含TIM6、TIM7两个基本定时器,计数器为16位,其功能比较简单,仅支持向上计数,且只能计时,没有外部I/O口。1、时钟源TIMxCLK:定时器的时钟源来自系统内部时钟,准确来说由APB1预分频器分频提供,因为TIM6、7都是挂载在APB1上的外设。如果APB1的预分频系数等于1,则频率不变,其他情况,频率乘以2,库函数中APB1的分频系数为2,故定时器的时钟TIMxCLK=36*2=72MHz。2、计数器时钟CK......
2022-06-29 13:24:30
2628
原创 STM32 EXTI外部中断/事件
一、EXTI外部中断/事件功能框图1、中断线路:①-②-③-④-⑤①输入线:有19个中断/事件输入线(联网型有20个),通过寄存器将这些输入线设置为任意一个GPIO。②边沿检测电路:选择上升沿触发、下降沿触发或者上升和下降沿都触发。③或门:选择软件触发或者GPIO输入触发中断。④与门:从或门③输出的信号分为两路,上路经过请求挂起寄存器输出与中断屏蔽寄存器一起控制与门的输出,并将与门④的输出保存至挂起寄存器EXTI_PR。⑤、将EXTI_PR寄存器内容输出至NVIC。2、事件线路:①-②-③-⑥
2022-06-19 17:57:34
2999
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人