- 博客(13)
- 收藏
- 关注
原创 面试大全——FreeRTOS
(1) 每个任务都有一个自身的TCB存储空间,在TCB中存在一个用于接收通知信息的数组,5个字节,其中1个字节用于通知状态,4个字节用于接收通知值。优先级继承机制:持有高优先级任务共享资源的低优先级任务,会被临时提升至高优先级同等的优先级,在共享资源释放后,会恢复自身之前的优先级。低优先级的任务持有高优先级任务所需要的共享资源,会导致高优先级任务无预期等待,那么此时中优先级的任务会打断低优先级任务先执行.(2) 队列:FIFO,线程安全,可以是任意类型的数据,支持阻塞(读写),支持优先级继承。
2025-03-05 19:00:40
339
原创 面试大全——STM32
其核心是一个计数器,可以根据时钟源进行递增或递减方式计数,可以使用预分频器对时钟源信号进行分频,用户配置ARR寄存器,当计数器达到ARR值时,产生溢出事件,如果开启了中断,还会产生中断。同步:发送方与接收方工作在共同的时钟信号下,比如:发送方在某一个时钟的上升沿发送一位数据,那么接收方需要在共同的时钟信号上升沿接收一位数据。什么是中断:针对于紧急事件的处理机制,中断产生后,CPU会暂停当前任务,转而执行紧急事件,处理完紧急事件后再恢复之前的任务。思考:工作电压为12V,为啥定义标准中是15V,防止干扰。
2025-03-04 18:49:43
305
原创 面试大全——C语言
区别: 储存位置: 字符数组:在内存中是一个连续的间保存的字符序列。好处:单个任务(进程)在使用内存时都是从0开始,同时会给定一个swap交换空间用于将被申请的内存中不常用的部分放置到磁盘。单个元素对齐:储存元素的开始地址需要时该元素大小的整数倍。回调函数:将一个函数作为另一个函数的参数,这个函数就是回调函数,会在特定的场景中被调用,一般传递函数指针。传递方式:传递的数据空间很大且不会在函数内部修改or修改外面的实参对未来使用没有影响使用传递指针。
2025-03-03 20:47:07
610
原创 嵌入式进阶:STM32——IIC协议 和 EEPROM
IIC 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。是一种简单的双向两线制总线协议标准,支持通讯。M24C02的SCL及SDA引脚连接到了STM32对应的I2C引脚中,结合上拉电阻,构成了I2C通讯总线,它们通过I2C总线交互。
2024-11-11 20:23:30
317
原创 嵌入式进阶:STM32——USART串口通讯
并行通讯和串行通讯串行:使用一根数据线逐位传输并行:使用多根数据线同时传输单工、半双工、全双工通讯单工: 数据传输方向是单向的半双工:数据传输方向是双向的,发送和接收不能同时进行全双工:数据传输方向是双向的,发送和接收可以同时进行同步和异步通讯同步:需要时钟信号线,发送方和接收方频率一致异步:不需要时钟信号线,发送方和接收方频率不一定一致USART外设同步异步收发器。USART是一个串行通讯设备,可以灵活地与外部设备进行
2024-11-11 11:43:00
607
原创 嵌入式进阶:STM32——中断系统
中断:在主程序运行过程中,出现了特定事件,使得CPU暂停当前正在运行的程序,转而去处理这个事件,等这个事件处理完成之后,CPU再回到刚才被打断的位置继续处理,这就是。中断嵌套:正在执行中断程序的时候,这个时候有可能被另外一个中断源给中断,CPU转而去执行另外一个中断源的中断处理程序。中断优先级:中断B能否打断中断A,要看他们的优先级,优先级高的可以打断优先级低的,优先级低的无法打断优先级高的。个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。中断源可以是外部的,也可以是内部的。
2024-11-11 11:42:36
493
原创 嵌入式进阶:STM32——GPIO
输出寄存器上的 0 激活N-MOS,而输出寄存器上的1 将端口置于高阻状态,所以外部必须要接上拉电阻。第16位用来激活锁定寄存器,必须按照规定的时序来操作才行: 写1 -> 写0 -> 写1 -> 读0 -> 读1。是用来清除对应的数据输出寄存器的位(0-15)的值:设置为0不影响,设置为1会清除ODR对应的位的值(置为0)。是用来设置对应的数据输出寄存器的位(0-15)的值:设置为0不影响,设置为1会设置ODR对应的位的值(置为1)。2,推挽模式:输出寄存器上的 1 将激活P-MOS,输出高电平。
2024-11-11 11:42:04
1189
原创 嵌入式进阶:STM32——存储器和总线构架
HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。PLL时钟一般都是对外部的8MHz的时钟信号经过9倍频后,得到72MHz的时钟频率,这是STM32F1系列允许的最高时钟频率。高速外部时钟是由外部时钟源提供,目前几乎所有的STM32单片机的设计都是在外部接一个。
2024-11-11 11:41:24
187
原创 JAVA基础语法:基础数据类型的转化
强制类型转化(显示类型转):是指将大的范围手动转化为小的范围,但可能会出现精度缺失的情况(如果想要提升数据类型也可以使用强制转换,这种情况是不会损失精度)string类型:任何类型与string类型进行+运算都会转化为string类型,例:System.out.println("字符串" + 1 + 2);自动类型转化(隐式类):是指将小的范围自动转换为大的范围的一种方式。1.当储存小的和储存大的一起运算时,会自动转化为储存最大的。前提是string类型在最前面,后面的相加内容依次进行拼接。
2024-09-17 12:30:00
223
原创 JAVA基础语法:循环语句 (while循环 do-while循环 for循环)
for循环是先执行初始化语句1,然后执行循环条件的判断,如果为ture则执行循环语句4,再执行迭代语句3,再进行初始化语句1;do-while循环是先进行do的语句执行一次,再进行while的循环条件判断,判断为ture继续执行到判断为false;(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立。(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立。for循环也是对循环条件进行判断,为ture则继续执行直到为false则循环中止;
2024-09-16 17:30:15
824
1
原创 JAVA的基础语法:条件语句( if语句 if-if语句 if-else语句 if-else if-else语句 switch-case语句)
执行时会先判断关系表达式1,如果满足则执行输出语句体1;如果不满足则会对关系表达式2进行判定,如果满足则会执行输出语句体2;注意:如果没有break,那么会出现case的穿透效果,无论case是否匹配都会执行;如果根据进入分支的条件是几个固定的常量值,这时使用if和switch都可以,如果条件选项比较多时,适合使用switch语句(效率高)当swich表达式的值与case的值匹配的是则输出对应的语句,如果都不满足则输出defau的语句。当关系表达式为ture执行语句体,当关系表示为false不执行语句体。
2024-09-16 17:29:57
395
原创 JAVA基础语法:运算符
使用的规则:赋值运算符是指将右边的数值常量赋值给左边的变量(右边一定是一个常量,左边可以是一个常量,变量,表达式)组合的赋值运算符:+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等。自变量前++和自变量后++:++a和a++ 自变量前--和自变量后--:--a和a--;右移运算符>>计算:m>>n右移到其2的n次方 用m除以2的n次方 (如果不能整除,无符号右移运算符>>>计算:当m是正数时 与右移运算符算法m>>n一样。结果1:结果2( a>2?
2024-09-16 17:29:42
1071
原创 JAVA的基础语法:原码 反码 补码
因为计算机中,数据都是补码组成,所以想知道计算机中负数的原码,需要用补码-1得到反码,再对反码进行还原,才能得到真正的负数的原码。例如:原码 -1 (100000001 ) 反码 (11111110) 补码(11111111)例:原码 1 (00000001) 反码 (00000001)补码 (00000001): 在原码的基础上 0变1,1变0,最高的符号位不变(因为只有负数才有反码,正数是其本身)负数的反码是符号位保持不变,其余位取反。负数的补码是在其反码的基础上+1。
2024-09-16 17:28:51
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人