民办本科从事嵌入式软件开发还是Java好

本人民办专升本大四,24岁,学的计算机科学与技术。在嵌入式方向和Java 方向纠结了两个月了,但是听说Java 程序员有35岁危机,嵌入式方向的话会好一点,真的是这样吗,这两个月自己什么也没有学,很内耗,唉,比起各位大佬感自己好差劲,都大四了还没选好方向,更别提准备了,太难了,有懂行的大佬给个建议吗?我的学历和情况是推荐我报个班学习嵌入式还是学习Java
全部评论
报班学嵌入式,现在学java49年入国军
2 回复 分享
发布于 2022-11-03 00:43 福建
我丢,我们一模一样,靠,焦虑
点赞 回复 分享
发布于 2024-08-30 18:10 四川
老哥,现在怎么样了
点赞 回复 分享
发布于 2023-06-19 16:21 浙江
现在怎么样了
点赞 回复 分享
发布于 2023-05-05 19:14 广东
大四才开始学Java已经卷不过别人了 换赛道吧
点赞 回复 分享
发布于 2022-11-14 03:04 福建

相关推荐

当你给STM32开发板通电或者按下复位键的那一刻,STM32内核(通常是Cortex-M系列)立即进入一个确定的状态。硬件复位逻辑强制程序计数器指向一个极其特殊的固定内存地址。对于大多数STM32,这个地址是0x00000000(或者根据BOOT引脚配置映射到其他存储区域的起始地址,例如内部Flash通常是0x08000000)这个地址存放的不是普通指令,而是整个启动流程的第一个关键要素——主堆栈指针的初始值。内核做的第一件事就是读取这个值并初始化MSP寄存器,为后续的函数调用和中断处理建立好堆栈基础。紧接着,内核会读取紧邻的下一个地址(0x00000004)的内容,这个位置存放的是复位向量的地址,也就是复位处理函数的入口点。内核将这个地址加载到程序计数器PC中,至此,硬件自动执行的步骤完成,程序跳转到了软件定义的复位处理函数开始执行。复位处理函数通常由芯片厂商在启动文件中用汇编语言编写(例如startup_stm32fxxxxx.s中的Reset_Handler)。这个函数是启动流程的核心协调者。它的首要任务是调用SystemInit()函数。这个函数由ST的HAL库或标准外设库提供,负责对芯片至关重要的系统级硬件进行初始化。其核心工作包括配置内部时钟源、设置PLL倍频器以将时钟提升到芯片运行所需的高频率、初始化外部高速时钟(如果使用的话)、配置Flash访问等待状态(因为Flash速度通常跟不上内核全速运行)、以及设置关键的系统控制寄存器如SCB->VTOR以正确指向中断向量表的位置。这一步确保了内核和主要总线拥有正确且稳定的时钟信号,是后续所有操作能够正确执行的基础保障。完成关键的时钟和基本系统配置后,启动流程进入一个容易被忽视但极其重要的阶段——由编译器运行时环境负责的数据初始化。复位处理函数接下来会跳转到一个通常名为__main的入口点(这是ARM编译器工具链的约定,其他工具链如GCC可能有类似_start的机制)。__main并非用户编写的main函数,而是编译器提供的库函数。它的核心职责是处理C语言运行环境。这包括:将存储在Flash中的初始化值(.data段)复制到对应的SRAM位置,确保全局变量和静态变量拥有正确的初始值;将未初始化的全局变量和静态变量所在的内存区域(.bss段)清零,防止出现随机值;如果使用了C++,还会执行全局对象的构造函数。这些操作是C/C++程序能够正确运行的前提条件,没有它们,全局变量将处于不确定状态。当所有的底层硬件初始化、运行时环境设置和数据准备就绪后,__main函数最终会调用用户编写的应用程序入口——main()函数,此时进入main函数执行。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务