自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 STM32。影子寄存器是什么,及其作用。

免责声明:本文内容仅代表作者个人观点和知识水平,不构成任何推荐或建议。因参考本文而造成任何直接或间接损失后果的,作者不承担任何责任。本文中的信息仅为作者个人学习研究成果的分享,不作为专业意见或建议。文章中如有错误,请斧正。因应用本文内容导致的风险或损失,作者不承担任何法律责任。以下是正文内容。

2024-04-06 21:46:40 116

原创 STM32。系统计时、延时功能,是怎么实现的?

免责声明:本文内容仅代表作者个人观点和知识水平,不构成任何推荐或建议。因参考本文而造成任何直接或间接损失后果的,作者不承担任何责任。本文中的信息仅为作者个人学习研究成果的分享,不作为专业意见或建议。文章中如有错误,请斧正。因应用本文内容导致的风险或损失,作者不承担任何法律责任。以下是正文内容。

2024-04-06 21:26:03 29

原创 STM32。如何降低功耗?

通过减缓GPIO口的切换速度,可以有效减少不必要的能量消耗。在不使用诸如UART、PWM、ADC等外设时,及时关闭其相关时钟,待需要时再重新开启,以减少这些外围设备在空闲状态下对电源的消耗。:对于长期不用的GPIO组,通过API如LL_IOP_GRP1_DisableClock()禁用其时钟,避免无谓的电源浪费。:在满足性能需求的前提下,根据任务负载动态调整处理器的时钟频率和工作电压,实现功耗与性能的平衡。:未使用的GPIO引脚设置为模拟输入模式,可以减少不必要的电流消耗。这样就降低了时钟频率。

2024-04-06 18:57:03 60

原创 为什么要上电复位电路?

首先,从硬件层面来看,当电源开始供电时,由于电源滤波、稳压元件以及PCB板分布电容等因素,电压上升到稳定工作值的过程并非瞬时完成,通常需要几毫秒至十几毫秒的时间。在此过程中,若芯片内部逻辑受到不稳定的电源电压影响而提前启动,可能导致寄存器设置混乱、运算结果错误等一系列问题,严重影响系统的稳定性与可靠性。总结来说,上电复位电路是保障嵌入式系统正确启动和运行的关键机制,它通过监控电源电压变化并适时发出复位信号,确保了数字集成电路在复杂的上电过程中的初始化有序进行,从而提高了整个系统的稳定性和鲁棒性。

2024-01-01 18:09:22 459

原创 电源线太细会导致电压下降。

具体来说,导线越长或者截面积越小(即线径越细),其单位长度的电阻值就越大,因此在相同电流负载下,产生的电压降也更为显著。综上所述,在设计嵌入式系统的电源布线方案时,选择合适线径的电源线至关重要。应充分考虑到电路的最大预期电流、电源线长度、导线材质以及系统对电源噪声的敏感程度等因素,合理选择截面积较大的电源线以减小压降,确保各部件获得稳定的电源供应。较细的电源线往往具有较高的感抗和容抗,这会在电流快速变化时加剧电压跌落或尖峰,对系统稳定性构成威胁,尤其是在高频开关电源或动态负载变化频繁的应用场景中。

2024-01-01 18:00:28 510

原创 如果某个模块或者芯片无法使用,要检查什么?

其次,对于含有晶振或者时钟信号输入的芯片,验证其时钟源是否正确且稳定运行至关重要。在一些复杂系统中,还需关注时钟同步机制是否有效执行,以避免因时钟信号异常导致的芯片无法初始化或工作异常。确认芯片的供电线路是否畅通无阻,电压值是否符合芯片数据手册中规定的范围,以及是否存在瞬态尖峰、噪声干扰等异常现象。同时,观察电源稳压器的工作状态,看是否有过热、输出不稳等可能导致电源失效的问题。例如,对于外设接口芯片,要确认相关寄存器配置是否合理,I/O引脚设置是否适配当前电路环境,以及总线通信协议参数是否准确无误。

2024-01-01 17:56:17 446

原创 所有器件和引脚都要共地,才具有可量性。

总的来说,所有器件和引脚的共地设计,是在嵌入式系统开发中遵循的基本原则,它确保了系统的电磁兼容性,提高了信号质量,保证了测量精度,并为复杂的多模块协同工作提供了坚实的基础。无论是对电源电压的监测,还是对数据信号的采样分析,都需要有一个统一、稳定的参考基准。通过将所有器件和引脚共地,我们能够确保测量设备读取的是基于同一参考点的真实电压值,从而保证了测量结果的准确性与一致性。所有器件和引脚的共地,是指将各个电路模块的地线,连接到一个公共的地平面或地线上,确保整个系统内的信号基准一致,从而具备理想的可量测性。

2024-01-01 17:49:01 420

原创 芯片手册中Register banks的意思。

register banks的意思可以翻译为组寄存器、寄存器组、寄存器堆,芯片中可能有多个寄存器组(bank0、bank1、bank2等等),每组中寄存器的名字都是相同的,但是内容可以保存不同组的内容。如在某芯片中,寄存器A是bank寄存器,在bank1中有A,在bank2中也有A,当用BANK1的A时,可以读写相应内容,但是不影响bank2的。一般通过写入某个寄存器的值,来切换不同的bank。

2024-01-01 17:36:44 393

原创 使用互斥量保证线程安全

每个线程在打印之前获取这个互斥量,获取到了才能打印,打印结束后再释放互斥量。这样就实现了线程排队打印的效果,一个线程打印结束后才能由下一个线程打印,防止内容混在一起。如果没有缓冲区,直接使用printf格式化然后打印的话,获取互斥量的时间会很长,降低效率。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。想象如果两个线程同时调用printf打印数据,两个线程发出的打印内容就有可能混在一起,造成混乱。

2023-11-06 11:05:31 53

原创 条件编译#ifdef和#if defined使用哪个比较好。

if defined避免了#ifdef可能产生的错误警告。一些编译器在#ifdef检查一个未定义的宏时会报警,而#if defined不会。#if defined可以检查一个宏是否被定义为任意值,而#ifdef要求宏必须定义为1。#if defined更符合语义,明确指出这是一个已定义的宏。#ifdef更常用于检查是否有定义某个变量,不太适合用于宏的检查。使用#ifdef时需要确保宏只被定义一次,否则可能导致意外结果。#if defined表达更明确,对其他开发者更友好。对于条件编译,建议使用。

2023-11-02 20:57:54 69

原创 PCM和PDM的区别。

举例:若音频信号在一个采样周期内的强度值是50%,则PDM编码可能是:010001111010110100其中0和1的数量比例接近50%,表示50%的强度。将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度)(例如8bit PCM一共可以表示256个量化等级,范围是0到255。PDM编码后的信号不能直接表示音频,需要通过低通滤波器等对比例进行解码,恢复音频信号。4.信号强度由0和1的比例表示在一个采样周期内,0和1的数量比例表示信号的强度,比例越高表示强度越大。PCM音质更好,PDM成本更低。

2023-11-02 20:19:55 813

原创 PWM调光的频率要求。

本文主要从PWM调光频率对人眼感知和摄像头采集的PWM调光频率的两个主要影响,以及不同应用场景的频率选择要点等方面进行了概述。如果PWM调光频率设置在100Hz-2kHz范围内,人眼会微妙地感觉到闪烁,长期下来会引起视觉疲劳。较高的PWM频率超过了人眼和镜头的感知门限,调光变化不会被捕捉到。但是对于监控摄像头的照明,由于需要长时间工作,仍建议使用无闪烁的模拟调光方式,而非PWM数字调光。对于摄像头照明,关闭PWM调光直接使用无闪烁的模拟调光,能获得最好的效果。但PWM调光的频率会对使用体验和影像产生影响。

2023-10-29 21:49:11 800

原创 USB电源,供电最大限制。

但是USB供电并非没有限制,设备在使用USB电源时,其功耗必须严格控制在规定范围内,否则会带来供电不足或过载等问题。高功耗USB设备在未配置前只能获得100mA的启动电流,待主机完成枚举和配置后,才能获得高达500mA的正常工作电流。对于需要比500mA更大电流的USB设备,比如外置光驱、大容量移动硬盘等,它们不能完全依赖USB接口的供电,而需要额外自带独立电源适配器。在使用USB设备时,也需要注意确认其功耗类型,避免向USB接口请求超过规定的电流,否则可能导致端口过载。

2023-10-29 21:09:22 126

原创 USB各个速度的模式的最大数据传输速度。

但这些模式的总线理论速率与实际获得的有效数据速率存在一定差距。USB定义了低速、全速和高速三种工作模式,它们的总线理论速率分别为1.5Mbps、12Mbps和480Mbps。其总线速率为1.5Mbps,经过各种传输开销考虑,实际获得的最大有效数据速率大约在800Bps左右。其总线速率高达480Mbps,最大有效数据速率可达到53MB/s量级。全速模式广泛应用于手机、音频设备等。其总线速率为12Mbps,最大有效数据速率可达到1.2MB/s。1. 总线时间分配开销,如SOF和其他UDP报文传输消耗的带宽;

2023-10-29 20:58:56 102

原创 USB的D+D-的各种信号的概念。

为进行高效可靠的通信,USB规范定义了多种特殊的信号状态,以表示事务的开始或结束、实现设备同步等重要控制作用。接着解析数据包的开始状态SOP和结束状态EOP的生成规则,以及复位状态RESET的具体电平时序要求。在全速设备上,闲置状态是指 D+为高电平、D-为低电平。当 D+线为低电平、D-线为高电平时,该状态为差分 0。:除了差分信号外,USB 规范还定义了其他两个差分状态:J 状态和 K 状态。在低速设备上,该情况则相反。:当 D+和 D-线从闲置状态转换到 K 状态时,将在开始低速或全速数据包前发生。

2023-10-29 20:44:35 1464

原创 USB。帧产生(SOF)。

SOF包拥有USB传输的最高优先级,它可以中断任何正在进行的数据事务。为确保SOF能够可靠发送,USB集线器含有babble circuit,在帧结束时它会强制清空总线,确保SOF能够按时发送。设备端通过连续接收SOF,并解析其中的帧号信息,可以实现与主机的时间同步,进而按固定周期进行数据收发。USB作为主从架构的互联系统,需要在主机和设备间建立精确的时间同步,以实现可靠的异步数据传输。本文拟通过概述USB的帧同步机制,解析SOF产生与传输的协议要求,以及在设备设计中如何利用SOF实现精确时序控制。

2023-10-29 19:58:00 392

原创 USB。USB设备收到标准请求后的处理。

对于需要数据传输的标准请求,设备在收到请求后需要在500ms内返回第一个数据包。设备端对标准请求的及时响应,直接影响了USB系统的初始化速度及稳定性。另外,整个需要数据传输的标准请求,从开始到结束状态切换,总时间不得超过5秒。USB协议定义了两类标准请求:不传输数据的请求和需要数据传输的请求。除上述通用时序要求外,对于特定的USB类相关请求,如果类文档有更严格的时序要求,设备也必须遵守。对于不传数据的标准请求,设备端需要在接收请求后50ms内完成请求处理和状态切换。

2023-10-29 19:12:23 41

原创 USB。HOST设置USB地址后,usb设备的处理。

在恢复时间结束后,设备必须能够在新地址响应主机的事务,不能再响应老地址。在完成地址设置后,设备需要在50ms内回复主机一个长度为0的状态包,或主机成功收到设备的状态包ACK,以确认地址设置成功。USB接口作为主机和多设备的通信架构,需要对设备进行寻址以实现数据的正确交互。在USB总线复位或恢复后,主机会向默认地址0的设备发送设置地址的请求。本文概述USB设备在接收到设置地址请求时的处理机制、时序约束,以及在新旧地址间切换的注意事项。正确解析地址设置阶段的时序与电路设计要点,是开发高可靠USB设备的基础。

2023-10-29 18:50:23 59

原创 USB。USB的电源管理。

如何在有限电源条件下,保证所有USB设备的正常工作,是所有USB系统设计人员必然要面对的问题。对于功率需求过大的设备,主机可能直接拒绝枚举,或者只枚举默认配置DESC中声明功率最小的一种工作模式。对于嵌入式工程师来说,合理设置USB设备的电源描述符,遵守协议中的功率切换规则,同时控制自身负载,都对实现一个稳定的USB供电系统非常重要。合理的USB电源管理,直接影响到系统的稳定性及设备的使用性能。总之,USB通过智能的电源管理机制,在有限电源条件下,试图最大程度满足所有设备的供电需求。

2023-10-29 18:29:46 119

原创 USB。错误检测机制。

USB的包标识符PID采用4bit数据+4bit校验码的结构,校验码为数据位的反码。接收端可以通过PID内建的冗余校验,来检测PID传输是否出现差错。除PID外,USB数据包中还含有CRC校验码。这可能是由于发送端填充错误,信号失真,或者接收端同步时钟问题导致。因此USB强制要求,如果出现6个连续0,必须在第6位后插入一个填充0。为实现高品质的数据传输,USB协议采用了多种检错机制来保证接口稳定可靠。本文拟通过概述USB中的PID校验、CRC和位填充检错方式,解析USB如何实现高可靠性串行通信。

2023-10-29 18:12:28 147

原创 USB。HOST和设备,无论任何一方,接收到错误的数据时,都选择不应答,不进行任何回复。

具体来说,如果主机向设备发送的数据包校验错误,USB设备检测到CRC错误,应当抛弃此数据包,不向主机返回任何回应。同理,如果设备回复主机的状态或数据包出现差错,主机也将直接丢弃,不进行确认。所以接收错误包的一方保持沉默,可以避免引入更多错误包导致的混乱。在USB数据传输过程中,无论是主机还是设备端,当接收到含有错误的USB数据包时,按照协议都应当采取不应答的策略,即不进行任何回复。通过这种简单的不应答策略,可以依赖发送端的重传机制来实现错误恢复,无需接收端额外通知或确认,降低了协议复杂度。

2023-10-29 17:57:57 34

原创 USB。SOF代表包的开始,叫做帧开始包,或帧起始包。

需要注意的是,SE0不仅可以表示EOP,在某些场合下也可以表示复位信号。例如USB设备刚连接到主机时,主机会通过将D+/D-拉低持续10ms来发送复位信号,重启设备。对于低速和全速设备,其EOP标志采用了双零(SE0)编码,即D+和D-线同时被拉低。SOF代表了每帧的开始,由主机以1ms的固定时间间隔发送。这可让设备识别一个新帧的开始,进行同步。在USB数据传输中,帧起始包(SOF)和结束包(EOP)标志位起到了同步和定界的作用。所以,EOP和复位信号都使用了USB空闲状态下的双零编码方案。

2023-10-29 17:36:40 345

原创 USB的数据预缓存机制。

举例来说,对于从设备到主机的IN传输,设备需要在两帧之间完成“采集数据-发送数据”的过程。同理,在从主机到设备的OUT传输中,设备端需要在两帧内完成“接收数据-处理数据”。设备会在帧Y收到主机的数据包,但不立即处理,等待下一帧的SOF信号后再开始数据处理,完成一次传输operation。通过这种预缓存操作,USB实现了接收和处理的时序解耦,增强了主机对通道传输时间的调度控制能力,也减小了不同设备时钟误差带来的影响。USB协议中的数据预缓存机制,是为了解耦数据的接收和处理过程,提高传输调度的灵活性。

2023-10-29 17:11:05 77

原创 USB没有时钟线,是如何进行同步的?

USB采用了NRZI编码方式,并在每个数据包开头加入同步域SYNC来进行时钟同步。另外,USB还通过位填充(Bit-Stuffing)技术强制向数据流中插入额外的翻转,以校正发送接收双方之间的时钟误差。比如归零编码(RZ)可将时钟同步信号编码进数据之中,实现自同步传输。非归零编码(NRZ、NRZI)效率更高,但需借助同步头来实现初始同步。相较含时钟信号的通信方式,这为USB提供了简化布线的优势。但是同时也带来了信号同步的问题。综上所述,USB同步传输主要依赖编码机制、同步头和位填充来实现无时钟的信号同步。

2023-10-29 16:39:55 376

原创 USB批量传输如何判断传输结束

例如最大包长度为64字节,要发送100字节数据,会分两批64字节数据包发送。2. 如果收到一个小于最大包长度的短包,那么也可以认为批量传输结束。因为数据已经发完了,最后剩余不到一个最大包长度。满足任一上述条件,USB主机控制器就会中止当前的IRP(I/O请求包),并开始处理下一个IRP,即下一次批量传输。如果收到一个超过最大包长度的非法超长包,那么主机控制器会中止等待此端点的所有批量传输IRP,否则可能导致数据混乱。1. 如果已发送的数据量刚好等于期望发送的数据总量,那么可以断定本轮批量传输结束。

2023-10-29 16:30:14 151

原创 关于USB低速设备和高速设备的端点数量限制

USB 2.0协议规定高速设备可以实现最多15个额外的输入端点和15个额外的输出端点。也就是除了必备的0号控制端点外,高速设备可以再额外拥有15个输入端点和15个输出端点,最大端点数为31。对于低速USB 1.1设备来说,除了必备的0号控制端点外,最多只能再实现2个额外的端点,即只能有1个额外的输入端点和1个额外的输出端点。总之,低速USB设备端点受到严格限制,而高速USB设备可以实现更多端点。USB协议规定,所有USB设备都必须至少实现0号控制管道,该管道包含0号输入和输出端点,用于传输控制信息。

2023-10-29 16:24:33 213

原创 usb描述符包含关系。

usb描述符包含关系。USB设备的描述符包含多个层次的关系,主要可以分为以下几个层次:

2023-10-29 16:19:18 26

原创 threadX的USBX的初始化和解初始化的分析。

tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行。主要就是创建了线程,也就是第3个参数app_ux_device_thread_entry,这个参数内是MX_USB_Device_Init,也就是USB底层初始化。进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”

2023-10-28 21:57:52 161

原创 USB从机如何检测usb拔出。

STM32当发生suspend事件时,会有一个中断OTG_FS_IRQHandler,然后执行一个处理函数HAL_PCD_IRQHandler处理函数里面读取寄存器判断是否发生了suspend事件,如果发生,那么执行一个回调。当主机进入休眠时,USB总线会进入Suspend状态,这时STM32将产生Suspend中断;而且当电脑开机运行BIOS时,会认为usb插上,然后退出BIOS会进入suspend,然后才启动Windows系统,“退出BIOS会进入suspend”可能会误判为usb拔出。

2023-10-28 21:39:10 180

原创 USB。标准请求的索引是什么意思?有什么用?

设置描述符请求SET_DESCRIPTOR,他的索引可以是0,如果是设置字符串描述符,那么索引代表的是语言ID。是可选的,可以更详细地描述信息,如果信息已经被很好的描述了,那么就不需要索引,索引填0。不是所有的标准请求都需要索引,如果请求本身已经完整地描述了信息,那么索引可以为0,也就是不需要。设置接口请求SET_INTERFACE,他的索引代表的是接口号。设置地址请求SET_ADDRESS,他的索引是0。其中的索引,不同的请求,索引代表的意思是不同的。Q:标准请求中的索引是什么意思?

2023-10-28 21:35:14 33

原创 增加了一个任务,所有任务就都无法运行了,为什么。

因为芯片的ram大小不够。例如,假设你使用的是STM32G0系列芯片,ram只有8K,其他任务占用太多的ram,而增加了一个任务之后,就溢出了,导致ram不够大,所以导致所有任务都无法运行。

2023-10-28 21:32:28 23

原创 USB。端点0是默认的控制端点。端点1可以用作控制端点吗?

不可以,在USB系统中,只有端点0可以用作控制端点,端点1不能用作控制端点。端点1-15都只能数据传输,比如批量传输、中断传输和等时传输。

2023-10-28 21:25:44 91

原创 USB。批量传输,中断传输,等时传输,控制传输,分别在什么时候使用?

用于需要固定带宽的,和连续的数据传输。可以保证数据是连续的,低延时,但不保证数据的准确性,如果数据错误,不会重发,而是直接发下一个数据,这就保证了实时性。用于数据量小的,周期性要求严格的情况。特点是传输数据量小,并且严格保证传输时间,有固定的最大传输周期,会定期传输数据。用于数据量大的,而且对时间要求不严格的情况。特点是传输效率高,适合传输大量数据,但不保证传输时间,可能会有延迟。主要用于USB设备的配置和控制,如读取/设置设备描述符等。打印机,扫描仪,MP3播放器、硬盘。

2023-10-28 21:23:31 109

原创 NMI中断是什么?

普通的中断可以通过设置中断屏蔽位来阻塞,但NMI中断不可以被屏蔽,它具有最高的优先级。一旦NMI被触发,CPU会停止其他所有的中断和任务,转而仅响应NMI中断,执行相应的中断服务程序。NMI中断是一种硬件级的紧急中断机制,用于处理严重的系统异常与故障情况。NMI中断是一种专门用于处理系统致命错误的高优先级紧急中断机制,它能够快速响应系统异常,采取应急措施,保证系统的稳定和安全运行。NMI中断是一种不可屏蔽的紧急中断,当它被触发时,CPU会立即响应,暂停当前所有的中断或任务,转而执行NMI中断服务程序。

2023-05-21 19:29:03 3306

原创 STM32。硬件CRC的使用。

STM32的CRC模块通过硬件自动进行CRC计算,大大提高了CRC的计算速度,非常适合需要频繁计算CRC的场景,如通信协议等。使用STM32 CRC模块,我们只需要提供要计算的数据,库函数会自动完成CRC计算,并返回CRC结果。CRC(循环冗余校验)是一种错误检测码,能够检测数据在传输或存储过程中是否出现了错误。STM32的CRC模块提供硬件计算CRC的功能,可以大大提高CRC计算的效率。HAL_CRC_Accumulate函数是累积计算CRC,它会把上次计算的CRC值作为初始值继续计算。

2023-05-21 19:09:52 1185

原创 USB。标准键盘的报告描述符解析。

标准键盘的输出报告包含1个字节,前5个bit用于控制Num Lock、Caps Lock和Scroll Lock等3个LED指示灯,后3个bit是保留位,用于字节补齐。所以通过输出报告,上位机可以控制键盘LED灯的亮灭状态。输入报告用于描述键盘按键数据的传输,输出报告用于控制键盘上的LED指示灯。所以标准键盘的输入报告可以表示出单次按键信息,通过这8个字节的数据,上位机可以识别出具体按下的是哪个键。第三到第八字节包含6个8bit的数据,范围从0x00到0x65,表示键盘上绝大部分功能键和字符键。

2023-05-21 18:18:43 682

原创 freeRTOS。任务通知。又称之为“邮箱”。

FreeRTOS中的任务通知机制允许一个任务通知其他任务某个事件的发生,被通知的任务可以选择是否挂起等待事件的到来。这个机制通过xTaskNotify()函数实现发送通知,xTaskNotifyWait()函数实现接收通知。xTaskNotifyWait()函数允许一个任务等待来自一个或多个任务的通知。任务通知机制提供了一种轻量级的任务间通信方式,通过设置通知值和选项来实现对事件的多路分发和同步。xTaskNotify()函数用于从一个任务向另一个任务发送通知。

2023-05-21 18:07:56 411

原创 STM32。使用usb升级固件。

3.选择USB设备:在STM32CubeProgrammer软件中,选择“USB”选项,如果没有port号,点击“刷新”,会识别出连接的USB设备,然后点击连接,如下图所示,Port栏的USB1就是我们连接的usb。5.复位芯片:固件下载完成后,我们需要重新复位STM32芯片,也可以断电直接重启机器,这会让芯片离开bootloader代码,开始执行新下载的固件程序,这样即可使用新的固件。1.连接USB线:使用usb线连接MCU芯片的usb接口,连接到电脑上。使用usb升级固件。

2023-05-21 17:56:26 1487

原创 STM32U5系列芯片,不支持ST-LINK Debugger怎么办?

这是因为keil的新版本支持,旧版本不支持。正常是可以选择ST-LINK Debugger,然后使用ST-LINK V2下载器来下载。STM32U5系列芯片,不支持ST-LINK Debugger怎么办?注意要安装J-Link 的驱动。这样的方式就是J-Link 的SWD来下载。其实右边除了第一个,其他都是地,如下图。

2023-05-21 17:44:03 371

原创 keil进入单步调试时,R0\R1\R2这种是什么意思?

ARM处理器有16个通用寄存器,用于存储数据和地址,标号为R0-R15。这16个寄存器可以根据需要灵活使用,没有严格的用途限定。在Keil中进行单步调试时,会遇到R0、R1、R2等表示法,这些是ARM架构中对通用寄存器的命名约定。除此之外,ARM还有其他专用寄存器,如状态寄存器CPSR/SPSR、控制寄存器等。keil进入单步调试时,R0\R1\R2这种是什么意思?

2023-05-21 17:36:47 1158

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除