博客
在客户使用STM32H723以及STM32H743的16-bit的ADC过程中,反馈如果使用HAL库,ADC可以正常采样,运行正常,但如果使用LL库生成的代码则ADC采样结果异常。
单片机本质上,是一个复杂的时序电路,而时序电路的行为依赖于,时钟信号来控制状态的变化,和数据的流动,如果没有时钟信号,单片机内部的时序逻辑将无法工作,整个系统将失去还有控制。
很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。
本文以STM32F103C8T6单片机为例创建演示工程,分为app和bootloader两个工程。即将mcu的Flash分为“app”和“bootloader”两个区域, bootloader放在0x8000000为起始的24KB区域内,app放在0x8006000为起始的后续区域。bootloader完成对app的Flash数据修改。
程序是静态的概念,有数据有代码,都是存在不同的区域,但是进程是动态的概念,主进程在运行的时候,会实际修改对应的数据,还有在上电加载的时候将数据段搬到对应的位置,都是属于运行态,由程序执行来保证。
在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量去、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段。
一、STM32F1和F4的区别?
解答:
参看:STM32开发 – STM32初识
内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;
主频不同:F1主频72MHz,F4主频168MHz;
浮点运算:F1无浮点运算单位,F4有;
功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;