
STM32
yky189
这个作者很懒,什么都没留下…
展开
-
通用指针void*转换为函数指针时强制转换
强制类型转换在C语言中是必要的,尤其是在处理指针和与API交互时。尽管它可能导致未定义行为,但在正确使用的情况下,它可以提高代码的灵活性和可读性。关键在于确保您了解转换的类型,并在使用转换后的指针时遵循正确的调用约定,以避免潜在的问题。原创 2025-01-08 15:53:46 · 445 阅读 · 0 评论 -
单片机代码运行时间计算
分析循环的指令数:1. 初始化循环变量 (int i = 0):1 条指令。4. 比较操作 (array[i] == 8):1 条指令。假设数组中没有早停条件(即必须遍历整个数组),遍历 500 个元素的总指令数为:总时间计算:执行 3000 条指令所需时间为:3000 \times 20.83 , \text{ns} = 62.49 , \mu\text{s}结论:在 48 MHz 的单片机上,遍历一个长度为 500 的数组,并判断是否有值等于 8,大约需要 62.5 微秒。接下来看代码中需要的指令数。原创 2024-12-30 11:46:28 · 370 阅读 · 0 评论 -
Keil编译器--结构体指针函数;结构体作为参数时,不能调用结构体指针函数
Keil编译器很多奇葩的地方,比如很多程序的写法在keil编译器里面实现是实现不了的,并且不报错,而且莫名其妙的死机。结构体里面有函数指针时,直接调用是可以的,但是在当结构体作为参数传入函数时,调用就会出现硬件中断。相同的方法在其它编译器中是正常运行的,比如QT自动的编译器typedef struct{ uint8_t soCharging;//充电状态 uint8_t soDsarging;//放电状态 uint8_t soChargMos;//充电MOS uint8_t soDsargMo原创 2021-07-21 10:24:23 · 1999 阅读 · 3 评论 -
MDK中One ELF Section per Function选项功能
MDK中One ELF Section per Function选项功能会把程序中未调用的函数给优化掉,不参与编译。原创 2020-11-03 15:51:46 · 1590 阅读 · 0 评论 -
STM32硬件中断的时候软件复位是没用的
1、当STM32单片机发生硬件中断以后,在硬件中断里面用软件复位单片机是可以复位的,但是复位后很大概率还是出现硬件中断。2、硬件中断后再次烧录可以运行的程序无法继续运行,重新上电后才可以运行。...原创 2020-11-03 14:57:12 · 819 阅读 · 0 评论 -
C语言中struct字节对齐问题
1.先确定实际对齐单位,其由以下三个因素决定(1) CPU周期WIN vs qt 默认8字节对齐Linux 32位 默认4字节对齐,64位默认8字节对齐(2) 结构体最大成员(基本数据类型变量)(3) 预编译指令#pragma pack(n)手动设置 n--只能填1 2 4 8 16上面三者取最小的,就是实际对齐单位(这里的“实际对齐单位”是我为了方便区分随便取...转载 2019-09-20 15:09:42 · 209 阅读 · 0 评论 -
STM32定时器时间的计算
跟时间相关的量有:系统时钟、分频系数、重装载值系统时钟默认不配置的时候是72M,可以根据自己需求配置;分频系数就是对系统时钟进行多少分频之后在使用,最好设置为72的倍数,方便运算;重新装载值是计算这么多值,时间到了之后重新开始计算的值,每一次计数的时间为分频之后时钟的到时;假设系统时间72M,分频系数设置为7200-1,那现在定时器的时钟为10kHz,每计一个数花费1/(10000)秒,重...原创 2019-09-19 14:15:32 · 2802 阅读 · 0 评论 -
stm32关于SystemCoreClock这个变量
实际上不是任何时候SystemCoreClock都代表着当前系统时钟,只有调用SystemInit();时钟配置函数的时候,SystemCoreClock才表示当前系统时钟,如果自己手动配置了系统时钟,则次变量不代表当前系统时钟。系统上的之后会首先进入SystemInit();函数配置时钟,然后再进入main()函数,如果在main函数里自己重新配置了时钟,那么此时时钟值即为自己配置的,而不是S...原创 2019-05-18 11:10:28 · 12062 阅读 · 0 评论 -
stm32f103系列低功耗模式(附代码)
在低功耗模式下,stm32f103系列的实际功耗st官方芯片手册有给出,也可以看如下文章:https://blog.youkuaiyun.com/yky189/article/details/89914928进入代码模式:不用初始化其它rtc时钟有个的其它配置:直接调用如下函数即可进入待机模式并设置RTC闹钟在15s后发生闹钟事件唤醒MCU,wake_up管脚唤醒MCU/***************...原创 2019-05-07 10:17:03 · 9637 阅读 · 2 评论 -
stm32低功耗模式下mcu的实际功耗(ST芯片手册)
STM32F103xC、 STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。 ● 睡眠模式在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。 ● 停机模式在保持SRAM和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式 下,停止所有内部1.8V部分的供...转载 2019-05-07 09:47:29 · 7213 阅读 · 1 评论 -
void SysTick_Handler(void)系统滴答时钟中断函数
可以作为整个系统的时基!在小调度程序和实时操作系统中可以用作系统的时基。微控制器的定时器资源一般比较丰富,比如STM32存在8个定时器,为啥还要再提供一个SYSTICK? 原因就是所有基于ARMCortex_M3内核的控制器都带有SysTick定时器,这样就方便了程序在不同的器件之间的移植。而使用RTOS的第一项工作往往就是将其移植到开发人员的硬件平台上,由于SYSTICK的存在无疑降低了移...转载 2019-01-19 21:24:50 · 8671 阅读 · 0 评论 -
stm32 SysTick时钟
SysTick定时器被捆绑在NVIC中,用于产生systick异常。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。滴答中断对操作系统尤其重要。例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要...原创 2019-01-19 11:36:00 · 1022 阅读 · 0 评论