首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
Search
1
在IC617中进行xa+vcs数模混仿
84 阅读
2
科普:Memory Compiler生成的Register file和SRAM有何区别?
74 阅读
3
virtuoso和empyrean alps模拟仿真和混仿教程
74 阅读
4
后仿中$setup,$hold与$setuphold
45 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
36 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vscode
linux
systemverilog
vcs
STM32
PyQT
EDA
FPGA
gvim
cadence
Alist
xilinx
UVM
uos
macos
package
MCU
risc-v
bennyhe
累计撰写
378
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
搜索到
378
篇与
的结果
2025-07-30
短链接技术解析:链接的简化之道
前言大家在短信中是不是经常看到下面的短连接,简短易记:看到这个时你是不是也想把你手里长长的链接变换为这种简单的链接呢?这篇文章我们从短链接起源、短链原理、短链算法、应用场景几个方面从 0 到 1 实现一个短链接服务。起源短连接的发展可以追溯到互联网初期,当时用户在分享长URL时面临繁琐和不便。为了解决这一问题,短连接服务应运而生。最早的服务如TinyURL和http://bit.ly为用户提供了将长URL转换为短连接的便捷方式,成为了这一概念的奠基石。简而言之就是把任何长度的链接压缩成一个短链接,例如 http://t.cn/Ex4V08E 就是 https://www.toolsdaquan.com 的短链接。除了有微博短链接外,国内出名的还有百度短链接(dwz.cn),腾讯短链接(url.cn)等,国外有谷歌短链接(goo.gl),GitHub 短链接(git.io)等。短域名的解析过程短域名的解析过程包括以下步骤:DNS解析:当用户输入短域名访问网页时,首先需要进行 DNS 解析,将短域名解析为对应的 IP 地址。重定向技术:根据短域名所对应的长链接,服务器将发起一个重定向请求,将用户引导至原始的长链接地址。在重定向过程中,常用的状态码有 301 和 302,其中 301 表示永久重定向,而 302 表示临时重定向。通过以上步骤,短域名的工作原理得以实现,用户可以通过简洁的短域名访问到原始的长链接地址,实现了链接的简化和分享的便利性。原文链接:https://blog.csdn.net/fudaihb/article/details/138227442实现原理短链接服务包含两个部分:短链接生成和通过短链接访问原链接,主要流程如下:## 短链接生成 - 使用哈希算法、自增计数等将长URL映射到短标识符,并且短标识符应该足够短以便于记忆和传播。 ## 通过短链接访问原链接 - 一般使用 HTTP重定向的方式。当用户访问短连接时,服务器通过HTTP重定向将其引导至原始URL。1、客户端将短链接服务器传给短链接服务器,服务器根据Hash、自增等方式生成短链接返回客户端。2、客户端使用短链接进行请求,短链接服务器接受到请求后查询到对应的长链接并返回302让客户端重定向到原链接进行访问。常见短链接生成算法哈希算法使用哈希函数对长URL进行哈希运算,得到固定长度的哈希值,然后将哈希值截取为短标识符。常用的哈希函数有MD5、SHA-1、SHA-256等。这种方法的优势在于生成的标识符是固定长度的,且具有较好的均匀性,但哈希算法是确定性的,相同的输入始终产生相同的输出,这使得短链接相对可预测且不易记忆。import hashlib def generate_short_url(original_url): hash_object = hashlib.md5(original_url.encode()) short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符 return short_code自增计数使用一个自增的计数器作为短标识符。每次生成短连接时,计数器加一,将其转换为适当进制的字符串作为短标识符。这种方法简单直观,但可能存在预测性问题,容易伪造。class ShortURLGenerator: def __init__(self): self.counter = 0 def generate_short_url(self): short_code = base62_encode(self.counter) # 假设使用62进制 self.counter += 1 return short_code随机生成生成一个随机字符串作为短标识符。这种方法简单且不易被预测,但可能导致短标识符的冲突。import random import string def generate_short_url(): short_code = ''.join(random.choices(string.ascii_letters + string.digits, k=6)) return short_code基于关键字的生成使用关键字或自定义标识符作为短标识符,例如使用文章标题、关键词的缩写等,使短链接更具易记性,但可能导致短标识符的冲突。def generate_short_url_from_keyword(keyword): # 简化处理,可以使用更复杂的映射关系 return base62_encode(hash(keyword))上述是几种常见的短链接生成方式,大家可以根据自己的的场景选择合适的方案。短链接的作用字符空间节省短链接通过将长URL转换为短标识符,大大减少了字符空间的占用。这对于在字符数受限的平台,如短信、二维码等,是非常重要的。美化和简化短链接提供了更美观和易读的方式来分享链接。长URL通常包含大量的字符和参数,短链接使得链接更为整洁,提高了用户体验。个性化定制一些短链接服务提供了自定义短链接的功能,用户可以根据需要为链接添加个性化标识符,使链接更具个性。实现一个简单的短链接服务以下是一个基于 Python 的简单示例,使用 MD5 哈希算法来生成短标识符的短连接服务:import hashlib from flask import Flask, request, redirect app = Flask(__name__) url_mapping = {} def generate_short_url(original_url): hash_object = hashlib.md5(original_url.encode()) short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符 return short_code @app.route('/shorten', methods=['POST']) def shorten_url(): data = request.get_json() original_url = data.get('url') if not original_url: return 'Invalid request', 400 short_code = generate_short_url(original_url) short_url = f"http://your-short-domain/{short_code}" url_mapping[short_code] = original_url return {'short_url': short_url} @app.route('/<short_code>') def redirect_to_original_url(short_code): original_url = url_mapping.get(short_code) if original_url: return redirect(original_url, code=302) else: return 'URL not found', 404 if __name__ == '__main__': app.run(debug=True) 示例中: /shorten 路由用于接收 POST 请求,生成短连接并返回短连接的 JSON 响应。 /redirect/<short_code> 路由用于接收短连接请求,根据短标识符重定向到原始URL。zhuanlan.zhihu.com/p/673800947
2025年07月30日
0 阅读
0 评论
0 点赞
2025-07-29
如何快速更换 macOS 应用程序、文件和文件夹的图标
icns是啥?第一步 生成不同尺寸的png图标创建icons.iconset文件夹用来放置不同尺寸的图标注:此文件夹名必须以.iconset结尾,否则生成icns文件时会报错,报错信息为invalid iconsetAI生成项目只做不同分别率图标可以直接使用在线网站https://onlinecooltools.com/zh/image-to-icon-converter或者格式工厂转换生成。在命令行中进入目录,并执行以下命令(可以批量复制粘贴执行)sips -z 16 16 pic.png --out icons.iconset/icon_16x16.pngsips -z 32 32 pic.png --out icons.iconset/icon_16x16@2x.pngsips -z 32 32 pic.png --out icons.iconset/icon_32x32.pngsips -z 64 64 pic.png --out icons.iconset/icon_32x32@2x.pngsips -z 64 64 pic.png --out icons.iconset/icon_64x64.pngsips -z 128 128 pic.png --out icons.iconset/icon_64x64@2x.pngsips -z 128 128 pic.png --out icons.iconset/icon_128x128.pngsips -z 256 256 pic.png --out icons.iconset/icon_128x128@2x.pngsips -z 256 256 pic.png --out icons.iconset/icon_256x256.pngsips -z 512 512 pic.png --out icons.iconset/icon_256x256@2x.pngsips -z 512 512 pic.png --out icons.iconset/icon_512x512.pngsips -z 1024 1024 pic.png --out icons.iconset/icon_512x512@2x.pngAI生成项目pic.png替换为你的图片文件路径,尺寸要求为1024x1024这一步会在icons.iconset目录下生成若干不同尺寸的图标,用来下一步生成icns图标第二步 生成icns图标iconutil -c icns icons.iconset -o Icon.icnsAI生成项目这步之后可以在目录下面看到Icon.icns图标,就可以使用了。或者直接使用在线网站https://www.aconvert.com/cn/image/png-to-icns/ 直接从png 转换为icns, tvbox 的icns 已经生成上传自己的wps 网盘更换图标打开「访达」「Finder」,左侧边栏中中选择「应用程序」文件夹,然后找到要更改图标的应用程序,鼠标左键点一下让 App 处于高亮选中状态 按下command + i 打开 App 的「简介」界面,也可以点击「标题栏」中的「简介」的小按钮选择新的图标文件,鼠标左键点击不松拖动到「简介」左上角的图标框上,然后松开鼠标左键即可如果应用程序在「程序坞」「Dock」上,此时只需 command + 鼠标左键点击应用图标可以立即查看更换后效果3.app 修改名字点击左侧的dock上面的访达图标。在访达内点击左侧边栏上面应用程序文件夹。点击选择需要修改名字的软件,右键软件选择重命名。等待软件上面有个黑色的框或者是文字变成黄色再次点击一下,并且输入新的名字。输入后在软件外围点击一下即可生效,这样做软件已经改名完毕了。
2025年07月29日
6 阅读
0 评论
0 点赞
2025-07-18
单片机中有FLASH为啥还需要EEPROM?
作者:无际单片机链接:https://www.zhihu.com/question/379251731/answer/2909256661来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在网上搜了一些资料,看完以后还是不能理解透彻,直到项目做多了,才彻底搞懂。Flash和EEPROM都是非易失性存储器,就是你设备掉电重启后,数据还会保留,如果是RAM的话掉电数据直接就丢了。下面从几个方面去介绍下Flash和EEPROM的区别:1.读取方式Flash和EEPROM都采用随机读取,可以通过地址直接访问存储器中的数据。2.写入方式Flash和EEPROM的写入方式不一样,EEPROM可以按字节进行写入,而Flash通常需要按块进行写入。还有就是,在Flash中,要写入一个数据,需要先擦除一整个块,然后再将新数据写入该块。3.擦除方式Flash和EEPROM的擦除方式不一样,EEPROM可以按字节进行擦除,而Flash一般需要按块进行擦除。也就是说,在Flash中,要擦除一个数据,通常需要先擦除一整个块,然后再将该块中需要保留的数据重新写入,比EEPROM操作麻烦一些。4.擦写速度EEPROM的擦写速度比Flash慢得多,擦写速度会受到许多因素的影响,包括使用的存储器型号、使用的接口类型、写入和擦除的数据量、芯片温度等等。5.存储密度Flash比EEPROM的存储密度更高,可以存储更多的数据。6.寿命Flash和EEPROM的寿命长短取决使用方式、应用场景等等。一般来说,EEPROM的寿命可能会更长一些,因为它可以进行单独的字节单位的写入和擦除,而Flash需要进行整个页面或扇区的擦除。这意味着EEPROM可以更灵活地管理存储器,并减少对存储单元的擦写次数。但是,这并不意味着所有情况下EEPROM的寿命都会更长。7.价格Flash比EEPROM更便宜。8.通讯接口不同Flash很多是用SPI协议接口、EEPROM很多是IIC协议接口9.数据保护方式Flash具有硬件和软件保护功能,而EEPROM只有软件保护功能。10.总结Flash更适合存储代码和常量,就是不需要频繁更新、数据量大的场景,比如说音频数据、图片数据、程序等等。EEPROM适合存储需要频繁更新数据、数据量小的场景,比如系统参数配置等等。作者:无际单片机链接:https://www.zhihu.com/question/379251731/answer/2909256661来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2025年07月18日
1 阅读
0 评论
0 点赞
2025-07-18
STM32 - 定时器的设定 -高级- 08 - One-pulse mode - 触发波的实现 - 可变长度和相位
前言:直接开讲,请耐心看完 :首先,OPM模式的波形可以通过主从模式进行触发,其次,OPM模式的波形本身可以进行波形定制。1 OPM定义和功能说明One-pulse mode (OPM) is a particular case of the previous modes. It allows the counter to be started in response to a stimulus and to generate a pulse with a programmable length after a programmable delay.OPM 模式是一个比较特殊的模式,该模型的参数包括:可以定制的长度和Delay(相位)的波形Starting the counter can be controlled through the slave mode controller. Generating the waveform can be done in output compare mode or PWM mode.定时器的触发可以通过主从模式的定时器来控制,而输出波形可以是CC模式或者PWM模式。Select One-pulse mode by setting the OPM bit in the TIMx_CR1 register. This makes the counter stop automatically at the next update event UEV.在TIMx_CR1选择OPM模式使能OPM,同时定时器的计数器在下一个Event UEV停止计数2 OPM设定的定时器通道相关控制寄存器:2.1 OPM-使能-定时器控制寄存器:TIM1 and TIM8 control register 1 (TIMx_CR1)OPM模式,其实就是在一个脉冲波形后暂停计数,就这么简单,后面也方便你定制。Bit 3 OPM: One pulse mode0: Counter is not stopped at update event1: Counter stops counting at the next update event (clearing the bit CEN)2.2 OPM-波形的设定:使能OPM之后,后面就是对OPM的输出波形进行设置:波形的设定,用CC(捕捉比较)的方式, 就是用定时器的计数去比较你的各种设定,然后,各种翻转逻辑,最后实现波形的定制。A pulse can be correctly generated only if the compare value is different from the counter initial value.后面要做的事情就是CNT(counter的计数)和CCRx \ ARR进行比较,当然在比较之前,如下:Before starting (when the timer is waiting for the trigger), the configuration must be:(向上计数的时候)CNT的计数应该小于CCRX或 ARR这样才能产生波形。• In upcounting: CNT < CCRx ≤ ARR (in particular, 0 < CCRx)• In downcounting: CNT > CCRx2.2.1 设定输出波形的细节The OPM waveform is defined by writing the compare registers (taking into account the clock frequency and the counter prescaler).• The tDELAY is defined by the value written in the TIMx_CCR1 register.我们知道CCR为CC模式的比较值,这个值来决定Delay也就是相位• The tPULSE is defined by the difference between the auto-reload value and the compare value (TIMx_ARR - TIMx_CCR1).自动装载值和比较值之间的差值用了决定脉宽• Let us say the user wants to build a waveform with a transition from ‘0’ to ‘1’ when a compare match occurs and a transition from ‘1’ to ‘0’ when the counter reaches the auto-reload value.我们假设我们的波形在CC模式比较匹配时候为高电平翻转,而当定时器计数达到自动装载值的时候为低电平翻转。所谓CC模式比较匹配,就是CNT = CCRx,这时候电平翻转到高,定时器计数达到自动装载值,就是CNT = ARR的时候,高电平变成低电平下图做了一些修改,原图遗失CCR1的横坐标线对于输出的波形有多种选择,To do this, enable PWM mode 2 by writing OC1M=111 in the TIMx_CCMR1 register.111: PWM mode 2 - In upcounting, channel 1is inactive aslongas TIMx_CNTelse active. In downcounting, channel 1is active aslongas TIMx_CNT>TIMx_CCR1 elseinactive.The user can optionally enable the preload registers by writing OC1PE=’1’ in the TIMx_CCMR1 register and ARPE in the TIMx_CR1 register.Bit 3 OC1PE: Output Compare1 preload enable0: Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately.1: Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event.Bit 7 ARPE: Auto-reload preload enable0: TIMx_ARR register isnot buffered1: TIMx_ARR register is bufferedIn this case the compare value must be written in the TIMx_CCR1 register, the auto-reload value in the TIMx_ARR register, generate an update by setting the UG bit and wait for external trigger event on TI2.(STM32手册这里好像有错误,应该是CC2P,不是CC1P)CC2P is written to ‘0’ in this example.In our example, the DIR and CMS bits in the TIMx_CR1 register should be low.Bits 6:5 CMS[1:0]: Center-aligned mode selection 00: Edge-aligned mode. The counter counts up or down depending on the direction bit (DIR).Bit 4 DIR: Direction 0: Counter used as upcounterThe user only wants one pulse (Single mode), so '1’ must be written in the OPM bit in the TIMx_CR1 register to stop the counter at the next update event (when the counter rolls over from the auto-reload value back to 0). When OPM bit in the TIMx_CR1 register is set to '0', so the Repetitive Mode is selected. Particular case: OCx fast enable:OPM模式也可以转成多波复制的模式,只需要OPM 位设为0即可。In One-pulse mode, the edge detection on TIx input set the CEN bit which enables the counter. Then the comparison between the counter and the compare value makes the output toggle. But several clock cycles are needed for these operations and it limits the minimum delay tDELAY min we can get.局限性:就是Delay的最小时间是系统局限的,因为上述信号接入需要一点时间:If the user wants to output a waveform with the minimum delay, the OCxFE bit in the TIMx_CCMRx register must be set. Then OCxRef (and OCx) are forced in response to the stimulus, without taking in account the comparison. Its new level is the same as if a compare match had occurred. OCxFE acts only if the channel is configured in PWM1 or PWM2 mode.注意:要立即响应的得到最小Delay的话,需要使能OCXFE位,改位用来强制OCx对OCXREF的响应加速。这个代价换来的意义是,多了仅仅两个时钟周期的响应时间。For example the user may want to generate a positive pulse on OC1 (输出比较)with a length of tPULSE and after a delay of tDELAY as soon as a positive edge is detected on the TI2 input pin.2.3 设置触发和时钟通道,定时器信号通道选择:Let’s use TI2FP2 as trigger 1:选择触发信号:下图为Timer channel的图我们这样理解定时器通道,定时器通道分成两个部分:输入、输出输入的部分我们看:TI1 、TI2这些都是input,输入通道包括输入滤波(可以滤除小的脉冲)和边沿检测,这样就到了TIxFPx(也就是输入经过滤波和预分频检测后的波形,叫做TI2FP2 Filtered Timer2 Input 2)。然后是,IC1,input capture输入捕捉通道,也属于输入吧,这里又有在预分频后的信号叫,ICx,(每个信号给他定一个名称就是为了后面负责的通道组合做好标识)。然后是,OC,输出比较通道,现在开始算输出通道。在进入输出通道OC之前,要开始做复杂的波形运算,达到我们想要的波形。就必须通过捕捉比较寄存器。通过设定通道的OCXREF、DTG的给到输出通道。• Map TI2FP2 to TI2 by writing CC2S=’01’ in the TIMx_CCMR1 register.将定时器输入通道TI2连接到TI2FP2,实际上是启用了CH2,将通道设定之后,通道的输出也就设定好了。• TI2FP2 must detect a rising edge, write CC2P=’0’ in the TIMx_CCER register.Bit 1 CC1P: Capture/Compare 1 output polarityCC1 channel configured as output:0: OC1 active high1: OC1 active low• Configure TI2FP2 as trigger for the slave mode controller (TRGI) by writing TS=’110’ in the TIMx_SMCR register.准备将TI2FP2作为从控制器的输入:TIM1 and TIM8 slave mode control register (TIMx_SMCR)Bits 6:4 TS[2:0]: Trigger selectionThis bit-field selects the trigger input to be used to synchronize the counter.000: Internal Trigger 0 (ITR0)001: Internal Trigger 1 (ITR1)010: Internal Trigger 2 (ITR2)011: Internal Trigger 3 (ITR3)100: TI1 Edge Detector (TI1F_ED)101: Filtered Timer Input 1 (TI1FP1)110: Filtered Timer Input 2 (TI2FP2)111: External Trigger input (ETRF)• TI2FP2 is used to start the counter by writing SMS to ‘110’ in the TIMx_SMCR register (trigger mode).Bits 2:0 SMS: Slave mode selectionWhen external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description.000: Slave mode disabled - if CEN = ‘1’ then the prescaler is clocked directly by the internal clock.001: Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level.010: Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level.011: Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input.100: Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers.101: Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled.110: Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled.111: External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter.最后,来一个重点中的重点,相位调节示意图:摘自csdn有道云笔记2021-11-16 16:21:47
2025年07月18日
4 阅读
0 评论
0 点赞
2025-07-18
STM32 - 定时器的设定 - 基础- 07 - 6-step PWM generation - 6步长PWM的产生 - COM Event的解释
前言:本节主要讲互补输出的步长设定问题,同时引入了一个重要的参数COM,这个再诸多STM32的手册里面都过于分散,在本文有一个比较完备的小结: When complementary outputs are used on a channel, preload bits are available on the OCxM, CCxE and CCxNE bits.互补输出主要由以下三个可以预设的设定决定:1 OC1M,OC1通道的输出模式,首先有OC1REF的模式决定,OC1REF会接到OC1 、OC1N然后,在OC1这里进行第二次设置,这里的设置又包括比较复杂的一组设定,有一个表:COM:(COM COMMUTATION交换 EVENT)or (Capture/Compare control update)COM的引入:提到COM之前,我们先看:定时器的控制寄存器2,里面的CCPC,CCUS控制位TIM1 and TIM8 control register 2 (TIMx_CR2)这里控制寄存器的CCPC位,决定了CCP 的 Preloaded的使能,这里定义了COM的2种出现的形式:(COMG bit set or rising edge detected on TRGI, depending on the CCUS bit).而CCUS里面的定义,则是对上述使能做更新的选择:事件产生寄存器TIM1 and TIM8 event generation register (TIMx_EGR)也就是COMGBit 5 COMG: Capture/Compare control update generation1: When CCPC bit is set, it allows to update CCxE, CCxNE and OCxM bitsCCPC预设值使能后,COM的相关使能位可以通过预设先设定好,而这三个通道恰恰就是决定了互补的输出波形,这些预设值在COM的EVENT的时候给到实际的shadow寄存器。The preload bits are transferred to the shadow bits at the COM commutation event. The user can thus program in advance (提前预设)the configuration for the next step and change the configuration of all the channels at the same time.COM can be generated by software by setting the COM bit in the TIMx_EGR register or by hardware (on TRGI rising edge).COM 的EVENT设定值可以是软件设定TIMx_EGR来实现,也可以 由硬件上升沿触发决定。EVENT发生的时候,会更新状态寄存器A flag is set when the COM event occurs (COMIF bit in the TIMx_SR register),Bit 5 COMIF: COM interrupt flagThis flag is set by hardware on COM event (when Capture/compare Control bits - CCxE, CCxNE, OCxM - have been updated). It is cleared by software.0: No COM event occurred.1: COM interrupt pending. 同时也可以产生中断:which can generate an interrupt (if the COMIE bit is set in the TIMx_DIER register) or a DMA request(if the COMDE bit is set in the TIMx_DIER register).Bit 5 COMIE: COM interrupt enable0: COM interrupt disabled1: COM interrupt enabledFigure 91 describes the behavior of the OCx and OCxN outputs when a COM event occurs,in 3 different examples of programmed configurations.Example 1:1 CO1M = 100 : OC1REF 为低电平 预设值2 CC1NE = 0, 那么 OCXN 的互补输出被关闭了3 CC1E = 1,OC1 的输出依据OCXREF的输出,再结合MIX的Table组合:当COM = 1 ,也就是,TIMx_EGR 的 COMG 更新的时候COM EVENT 事件产生,同时更新设置,那么OC1REF force low,OC1的输出被拉倒低电平Example 2:和例子1不同的是,CC1NE的值设为1,这样互补通道打开,同时OC1M设为1,那么OC1REF 被Force to High 给到OC1如果之前OC1REF就是高,那么他是不变的,互补输出通道则由原来的LOW改为和OC1REF一致为高,所有的这些变动,都是在COM TO 1的时候生效,这个和SAMPLE1 一致,仔细看这个例子,前面互补输出的通道都是正常的,到COM TO 1 触发之后,OC1N的通道就一直未低电平了,DISABLE。该例子给出了OC1REF的两个互补波形,而且还带死区的Delay有道云笔记2021-11-16 15:30:49
2025年07月18日
0 阅读
0 评论
0 点赞
1
...
20
21
22
...
76