【stm32f103学习笔记】字、半字、字节和sizeof()

本文是关于STM32F103的学习笔记,探讨了处理器中字、半字、字节的概念,并详细解释了sizeof()函数在不同处理器上的应用,强调了其在确保程序跨平台兼容性中的重要作用。通过实例展示了如何正确使用sizeof()避免因数据类型字节数不同导致的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【stm32f103学习笔记】字、半字、字节和sizeof()

定义

-字、半字是根据处理器的特性决定的;字节则都是8bit。
-sizeof()返回一个数据类型的占用地址长度,增强程序在不同处理器间的兼容性;
CPU按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等。
CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。
几个处理器比较

1)stm32是32bit处理器,所以它的字是32bit的(一次处理4字节长度的数据)。半字自然就是16bit(2字节);字节是8bit

stm32和传统的arm相比最大的好处就是不需要对齐,三种类型的数据可以在内存中无缝的存放。而传统的arm7或arm9等是照着地址对齐的,就是说不管8bit或者16bit的数据都要占用4个字节的空间,这样的结果就是造成内存的浪费。

寄存器的访问

半字型的寄存器用u16类型的变量访问,u8只能访问低8位,u32读的时候没问题,写
### STM32F103C8T6 数示波器实现方案 STM32F103C8T6 是一款基于 ARM Cortex-M3 内核的高性能微控制器,广泛应用于嵌入式系统开发。利用其丰富的外设资源(如 ADC、TIM 定时器、DMA 等),可以构建一个简易的数示波器。以下是其实现的关键技术具体方法: #### 1. **硬件设计** 硬件部分主要包括 STM32 微控制器及其外围设备的设计。核心组件如下: - **主控芯片**: STM32F103C8T6 提供强大的计算能力多种外设支持。 - **信号输入接口**: 需要设计合适的电压范围适配电路,通常采用运放缓冲或衰减网络来匹配 ADC 输入范围[^3]。 - **显示模块**: 常见的选择是 OLED 或 LCD 屏幕,用于实时显示采集到的波形数据。 - **电源管理**: 设计稳定的供电电路以确保系统的正常工作。 #### 2. **软件架构** 软件设计分为几个主要模块: - **初始化配置** 初始化 MCU 及其外设,包括系统时钟设置、GPIO 配置、ADC 参数调整等。例如,在某些情况下,采样率与分频因子之间存在约束关系,需合理规划这些参数以满足应用需求[^4]。 - **AD 转换控制** 利用 DMA 技术提高 AD 数据传输效率,减少 CPU 干预时间。这样可以在高频条件下持续获取精确的数据样本[^1]。 - **数据处理算法** 对原始模拟量进行数化转换之后,可能还需要执行一些简单的滤波或者放大操作以便于观察目标特征。此外还包括 FFT 计算等功能扩展选项[^2]。 - **图形界面展示** 将经过初步处理后的数值映射成可视化的曲线形式呈现给用户查看。这部分涉及到坐标系建立以及像素点绘制等内容[^3]。 #### 3. **关键代码片段** 下面给出一段简化版的核心程序框架作为参考: ```c #include "stm32f1xx_hal.h" // 全局变量定义 uint16_t adcValue[512]; // 存储ADC采样的结果数组 volatile uint16_t index = 0; // 当前写入位置索引 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ if(index >= sizeof(adcValue)/sizeof(uint16_t)){ index = 0; } } int main(void){ /* 用户应用程序入口 */ // 初始化HAL库函数调用 HAL_Init(); // 配置系统时钟至最大频率72MHz SystemClock_Config(); // GPIO端口初始化 MX_GPIO_Init(); // ADC通道初始化并启动连续模式下的自动注入扫描序列 MX_ADC1_Init(); __HAL_ADC_ENABLE(&hadc1); HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adcValue,sizeof(adcValue)/sizeof(uint16_t)); while (1){ // 主循环体留空等待中断事件驱动完成相应任务 } } ``` 以上仅为示意性质的部分源码结构概览,并未包含全部细节逻辑,请参照实际项目需求进一步完善补充相关内容后再投入使用。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值