编码,解码通俗理解

概念

编码:按照某种规范,将文字转换为0,1
解码:按照某种规范,将0,1转换为文字

举例

啊 按照utf-8规范被转换为 &#x554A ,这个过程就是编码
在这里插入图片描述
这些字符 每一个都对应了一个数字(这是规定好的),而数字在计算机又再一步被转换为二进制数据,这样就可以被传输了
在这里插入图片描述
什么叫规定好的呢?比如像base64的索引表,每个字符都被规定了对应的数字
在这里插入图片描述
解码的过程就是把二进制数据按照一定的长度分组,比如utf-8是8位为一组,那么就按照8位划分,然后转换为数字,然后再到这张表里去找对应的字符

出现乱码

出现乱码的原因就是编码和解码不一致导致的,
比如编码的规范中规定8位为一组,而解码却是16位为一组,或者我规定97代表的是a字符,你规定96是a字符,97是b字符
这样就会出现,两边不一样

### STM32编码器的通俗易懂解释 STM32中的编码器功能通常通过其通用定时器实现,这些定时器具有输入捕获的功能,可以用来解码来自增量式编码器的信号。以下是关于如何利用STM32处理编码器信号的一个简单说明。 #### 增量式编码器的工作原理 增量式编码器是一种旋转传感器,它能够提供位置变化的信息。这种类型的编码器一般有两个通道A和B,这两个通道相位相差90度(称为正交)。当轴转动时,两个通道会产生一系列脉冲,通过对这些脉冲的数量、方向以及时间间隔进行分析,就可以计算出转子的位置和速度[^4]。 #### 使用STM32配置编码器模式 要使STM32支持读取并解析来自编码器的数据,主要依赖于TIMx定时器的特定工作模式——编码器接口模式。此模式允许硬件自动检测由编码器产生的AB两相信号的变化情况,并据此更新内部计数值来反映当前机械角度或者线性移动距离的状态改变程度。 具体设置步骤如下: 1. **初始化GPIO引脚**: 配置连接到编码器输出端口上的微控制器管脚作为输入用途。 2. **设定定时器参数**: - 选择合适的定时器实例 (比如 TIM2, TIM3 etc.) - 启用相应的时钟源 - 调整预分频系数(PSC) 和自动重装载寄存器(ARR),以便获得期望的时间分辨率 3. **启用编码器模式**: 设置 CCMRx 寄存器以定义每个输入信道的行为方式;对于标准四倍频率增强型编码器应用来说,则需分别指定 CH1 和CH2 的极性和滤波采样周期等属性值。 4. **启动计数操作** 当一切准备就绪之后便可以通过调用 HAL 或 LL API 函数开启实际数据采集流程了。 下面给出了一段简单的代码示例展示如何在STM32CubeMX生成的基础项目框架之上进一步定制化开发针对某个具体型号MCU芯片所对应的外设驱动程序片段: ```c // 初始化TIM2为编码器模式 void MX_TIM2_Init(void) { TIM_Encoder_InitTypeDef sConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 0; // 不使用预分频 htim2.Init.CounterMode = TIM_COUNTERMODE_UP;//向上计数模式 htim2.Init.Period = 65535; // 自动重载值最大范围 htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; sConfig.EncoderMode = TIM_ENCODERMODE_TI12; // TI1 & TI2 mode selected. sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; // IC1 rising edge detection enabled. sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; // IC2 rising edge detection enabled too. if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2,&sMasterConfig)!= HAL_OK ) { Error_Handler(); } } ``` 以上代码展示了如何将TIM2初始化成适合捕捉来自外部设备发送过来的标准形式双轨制绝对定位反馈信息流的最佳实践方法之一[^5]. ### 结论 综上所述,在嵌入式系统设计领域里合理运用好单片机内置资源如定时/计数模块等功能部件往往可以帮助我们更高效便捷地完成各类复杂任务需求解决过程之中遇到的技术难题挑战等问题解决方案探讨交流分享等内容介绍完毕后结束本次讨论环节谢谢大家观看!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值