
嵌入式单片机
文章平均质量分 50
WangLanguager
喜欢IT,喜欢编程,希望遇到更多志同道合的朋友!
展开
-
PWM模块的中断
在一些微控制器或DSP芯片的PWM模块中,提供了触发中断的功能,通过配置PWM模块的中断触发条件和中断服务函数,可以在特定的时间点触发中断,从而实现定时功能。具体来说,可以通过配置PWM模块的事件触发子模块(ET)来设置定时中断,当计数器达到设定的值时,会触发中断请求,然后执行相应的中断服务函数。在中断服务函数中,可以进行定时任务的处理,如数据采集、状态监测等操作。总之,PWM模块的中断功能可以在PWM周期内实现定时任务的执行,提高系统的灵活性和可控性,是一种常见的应用方式。原创 2024-04-05 10:23:57 · 1186 阅读 · 0 评论 -
UART协议
该例程实现了UART通信的配置函数uart_config()、发送函数uart_sendByte()和接收函数uart_receiveByte()。在使用此例程时,仅需调用uart_config()函数进行UART配置,然后调用uart_sendByte()函数就可以向外部设备发送数据,使用uart_receiveByte()函数就可以从外部设备接收数据。这是一个简单的UART例程,针对不同的具体场景和需求,还需要进行更加详细的配置和调试,确保UART通信的稳定和可靠。原创 2023-04-12 23:00:00 · 415 阅读 · 0 评论 -
嵌入式软件架构设计协议定义
协议定义规定了通信双方之间的消息格式以及通信方式,保证了系统之间的可靠性、安全性和互操作性。根据具体的场景和需求,可以选择合适的协议定义进行通信。MQTT协议:MQTT是一种基于发布/订阅模式的消息协议,适用于支持互联网的嵌入式系统。UART协议:UART是一种简单的串行通信协议,适用于低速、短距离的通信。CAN协议:CAN是一种面向车辆电子控制领域的网络通信协议,适用于长距离、高速数据传输。SPI协议:SPI是一种高速的串行通信协议,适用于短距离、高速数据传输。SPI协议需要使用至少4个引脚进行通信。原创 2023-04-11 22:00:00 · 169 阅读 · 0 评论 -
嵌入式软件架构设计模块划分
模块化、松耦合模块划分:将整个系统划分为若干个互不依赖、高度独立的模块,每个模块都有清晰的接口,不同的模块之间通过接口进行通信。功能模块划分:将收集到的需求进行归类、总结和分析,将这些需求概括为一个个单独的功能,每个功能做成一个单独的功能模块。状态机模块划分:将软件系统中所有的功能和状态都看作一个个状态机,一个状态机表示具体的功能或状态。分层模块划分:将软件系统按照逻辑上的不同层次分为不同的模块。不同的模块划分方法有着自己的特点和适用范围,根据具体情况选择合适的模块划分方法可以使整个软件系统更加优秀。原创 2023-04-18 22:45:00 · 926 阅读 · 0 评论 -
嵌入式软件架构设计接口规范
图表类接口:该种接口规范用于实现数据的可视化。例如,在智能家居系统中,可以使用图表类接口将温度、湿度、光照等传感器数据以图表形式呈现,方便用户查看。创建类接口:该种接口规范用于创建新的对象,如创建一个新的线程、创建一个新的设备驱动程序等。查询类接口:该种接口规范用于查询已有对象的信息,如查询系统的网络配置信息、查询设备状态等。文件类接口:该种接口规范用于访问嵌入式系统中的文件系统,如读取、写入、删除文件等。敏感类接口:该种接口规范用于管理嵌入式系统中的敏感信息,如用户密码、密钥等。原创 2023-04-19 21:30:00 · 840 阅读 · 0 评论 -
嵌入式软件架构设计
智能家居系统的软件架构一般由以下组件构成:操作系统:嵌入式系统可以选择不同的操作系统,如嵌入式Linux、FreeRTOS等。智能家居系统通常需要实时性高、响应速度快的特点,因此可以选择实时操作系统。应用程序:智能家居应用程序是系统的核心功能模块,包括温度、湿度、光照等传感器采集模块,语音识别、图像识别等智能控制模块,以及与用户交互的人机界面模块等。驱动程序:嵌入式系统中的硬件外设需要编写相应的驱动程序,以实现对硬件设备的控制和数据读取。原创 2023-04-05 22:00:00 · 2609 阅读 · 0 评论 -
FreeRTOS的任务堆栈
FreeRTOS中的堆栈是从操作系统分配的堆中分配的,不同任务的堆栈不会相互干扰,因此任务之间的数据是隔离的。当创建一个新任务时,FreeRTOS会自动分配一块足够大的空间作为该任务的堆栈,并将其地址存储在任务控制块(TCB)中。堆栈的大小是通过xTaskCreate()函数的参数指定的,通常情况下需要根据任务所需的局部变量的大小及递归调用深度来合理设置。需要注意的是,堆栈大小应根据任务的实际需求进行设置,过小的堆栈容易引起栈溢出问题,过大的堆栈则会占用不必要的内存空间。FreeRTOS的任务堆栈。原创 2023-04-03 22:00:00 · 3065 阅读 · 0 评论 -
FreeRTOS的互斥量
例如,创建一个互斥量可以使用函数xSemaphoreCreateMutex(),获取互斥量可以使用函数xSemaphoreTake(),释放互斥量可以使用函数xSemaphoreGive()。由于互斥量的特性,同一时刻只有一个任务能够获得该互斥量,从而保证了对临界资源的独占式访问。支持防止优先级翻转:当一个低优先级任务持有互斥量时,高优先级任务不能获取该互斥量,从而避免了优先级翻转的问题。支持互斥量所有权:一个任务可以持有一个互斥量并防止其他任务获取它,只有持有互斥量的任务才能访问临界资源。原创 2023-04-03 21:00:00 · 412 阅读 · 0 评论 -
freeRTOS消息队列
要使用消息队列,首先需要创建一个队列句柄,这可以使用xQueueCreate()函数完成。发送消息时,我们使用xQueueSend()函数,该函数接受三个参数:队列句柄,指向要发送数据的指针以及等待数据可用的时间(如果队列已满)。要从队列中收取消息,请使用xQueueReceive()函数,它也接受三个参数:队列句柄、指向接收数据的指针以及等待数据的时间(如果队列为空)。总之,FreeRTOS消息队列是一种非常有用的方式,用于在任务之间传递数据,而不需要使用全局变量或其他同步机制。原创 2023-04-02 22:00:00 · 797 阅读 · 0 评论 -
freeRTOS任务延迟
vTaskDelay()函数采用一个以Tick为单位的参数,表示要延迟的时间。如果调用vTaskDelay(1000)函数,则当前任务将被挂起1秒钟(假设系统Tick率为1kHz)。在这个例子中,我们创建了一个名为task的任务,它会执行一些操作,并在每次操作之间延迟500毫秒。我们使用pdMS_TO_TICKS()宏将毫秒转换为以Tick为单位的时间。在FreeRTOS中,任务延迟是通过vTaskDelay()函数实现的。该函数会挂起当前任务一段时间,并将控制权交给另一个任务。原创 2023-04-02 21:00:00 · 947 阅读 · 0 评论 -
freeRTOS任务挂起和恢复
在任务挂起期间,该任务所占用的CPU处理时间将被释放,以便其他任务能够获得更多的CPU时间。因此,在实际应用中,可以通过挂起一些低优先级的任务来让高优先级的任务优先执行,以提高系统的响应速度。类似地,FreeRTOS也提供了vTaskResume()函数来恢复一个被挂起的任务,该函数也接受一个参数,即要恢复的任务的句柄。FreeRTOS提供了vTaskSuspend()函数来挂起一个任务,该函数接受一个参数,即要挂起的任务的句柄。任务挂起指暂停一个任务的执行,任务恢复则是使一个被挂起的任务继续执行。原创 2023-04-01 22:00:00 · 611 阅读 · 0 评论 -
freeRTOS任务死锁
在这个示例代码中,Task1和Task2都需要同时获取ResourceA和ResourceB,但是它们以不同的顺序尝试获取这两个资源,这可能会导致死锁。每个任务都需要同时访问这两个资源才能完成它们的工作。当发生任务死锁时,系统将永远无法正常运行,因为任务在等待其它任务释放资源,而该其它任务却也在等待某个资源,从而使得整个系统陷入僵局。在该示例中,Task1和Task2在尝试获取两个资源时都会等待一定时间,如果在这段时间内无法成功获取两个资源,则会放弃当前的获取尝试并重新开始。freeRTOS任务死锁。原创 2023-04-01 21:30:00 · 2874 阅读 · 0 评论 -
freeRTOS任务优先级反转
在嵌套中断模式下,如果一个高优先级任务被阻塞在一个低优先级任务上,那么操作系统会自动将低优先级任务的优先级提高到与高优先级任务相同,以确保高优先级任务可以及时运行。在优先级继承中,当一个高优先级的任务需要获取一个由低优先级任务持有的共享资源时,它会临时提升该低优先级任务的优先级,以便允许该低优先级任务快速释放该资源。在修改后的代码中,当任务1获取共享资源时,会使用 vTaskPrioritySet() 函数将任务2的优先级提升到与任务1相同,然后在释放共享资源后恢复任务2的原始优先级。原创 2023-03-31 08:15:00 · 1574 阅读 · 0 评论 -
freeRTOS任务优先级
在FreeRTOS中,任务的优先级是用数字表示的,数字越大,优先级越高。由于TaskB的优先级比TaskA高,因此在系统中运行TaskB时,它将抢占TaskA,直到TaskB完成或被阻塞为止。需要注意的是,在任务编写时应该遵循良好的编程实践,如避免任务优先级反转、使用适当的同步机制等,以确保系统的稳定性和可靠性。TaskA的优先级为1,而TaskB的优先级为2。需要注意的是,在设计多任务应用程序时,必须非常小心地选择和使用任务的优先级,否则可能会导致一些问题,如优先级反转、死锁等。原创 2023-03-31 07:45:00 · 2227 阅读 · 0 评论 -
freeRTOS任务创建和删除
FreeRTOS 中任务的创建和删除使用 xTaskCreate 和 vTaskDelete 函数。原创 2023-03-30 18:45:00 · 544 阅读 · 0 评论 -
freeRTOS的任务管理
接着在 setup 函数中,我们初始化串口、创建任务1和任务2,并启动 FreeRTOS 调度器。任务创建和删除:可以使用API函数vTaskCreate()来创建新任务,并使用vTaskDelete()函数删除现有任务。当程序运行时,FreeRTOS 将会轮流执行任务1和任务2。每个任务都是独立运行的,因此任务1和任务2可以同时运行。任务挂起和恢复:可以使用vTaskSuspend()和vTaskResume()函数来暂停和恢复任务的执行。任务优先级:每个任务都有自己的优先级,可以在创建任务时指定。原创 2023-03-30 18:30:00 · 271 阅读 · 0 评论 -
freeRTOS的信号量
在这个例子中,vTask1和vTask2任务都需要互斥地访问共享资源,因此我们创建了一个二进制信号量xSemaphore,并在每个任务中使用xSemaphoreTake()和xSemaphoreGive()函数请求和释放信号量。信号量是一个计数器,用于跟踪可用资源的数量。首先,在任务创建时创建信号量,然后可以使用xSemaphoreGive()和xSemaphoreTake()函数请求和释放信号量。计数信号量则可以跟踪多个资源的数量。FreeRTOS提供了两种类型的信号量:二进制信号量和计数信号量。原创 2023-03-29 22:00:00 · 274 阅读 · 0 评论 -
freeRTOS的任务调度器
在此示例中,我们定义了两个任务task1和task2,每个任务都包含自己的代码并使用vTaskDelay函数来延迟其执行。当一个任务等待某些事件发生时,例如等待一个信号量或等待某个定时器到期,它将被暂停,并让其他任务继续运行,从而充分利用系统资源。这只是FreeRTOS任务调度器的一个简单例子,但它可以帮助您理解如何编写和组织任务以及如何使用任务调度器来将它们组合在一起。总体而言,FreeRTOS的任务调度器提供了一种强大而灵活的机制,使嵌入式系统能够有效地处理并发任务,并满足实时要求。原创 2023-03-29 21:30:00 · 283 阅读 · 0 评论 -
SPI通信的主模式、从模式
主设备向从设备发送一个数据字节并等待从设备返回一个响应字节(或多个字节),然后再发送下一个数据字节。当主设备向从设备发送数据时,从设备会立即接收并响应该数据,然后从设备会将响应数据返回给主设备。在SPI通信中,主设备(Master)控制整个通信过程,与之相对的是从设备(Slave)。在SPI通信中,从设备(Slave)被动等待主设备(Master)的指令,并进行响应。与之相对的是主设备。通常,从设备用于采集或处理来自各种传感器或其他设备的数据,并将其传输回主设备进行进一步处理。原创 2023-03-27 15:00:00 · 8798 阅读 · 0 评论 -
提高EEPROM擦写寿命的各种方法--软件均衡擦写算法举例
在初始化时,我们将所有块的擦写次数都清零。在写入数据时,我们首先计算出写入数据所在的块号,将数据写入EEPROM中,并更新该块的擦写次数。具体来说,我们会寻找所有块中擦写次数最小的块,将其数据复制到当前块中,并将该块擦除,同时将其擦写次数重置为0。EEPROM均衡算法是一种用于延长EEPROM寿命的技术,其思路是通过均衡不同块的擦写次数,来减轻单个块的使用压力,从而延长EEPROM整体的使用寿命。采用均衡算法:EEPROM的擦写寿命通常是按块计算的,因此采用块的均衡擦写算法可以延长EEPROM的寿命。原创 2023-03-26 22:00:00 · 2652 阅读 · 1 评论 -
IIC通信防挂死
在发送数据前,程序会记录当前时间,并在每次循环中计算已经过去的时间,如果超过预设的超时时间,则退出循环并返回发送失败。在IIC协议中,挂死指的是一个设备向总线上发送数据时一直保持SDA线为低电平或高电平状态,导致其他设备无法访问总线。在代码实现中设置超时时间,确保如果某个设备在规定时间内没有回复,则主设备可以忽略该设备,并继续向其他设备发送数据。当IIC总线上存在多个设备时,应按照正确的顺序进行初始化,以确保每个设备都能正确地响应主设备的命令。原创 2023-03-26 12:15:00 · 1054 阅读 · 0 评论 -
IIC协议的主模式、从模式
在程序初始化中,通过调用Wire.begin()方法,并传入设备地址,来初始化从设备。在接收函数中,程序通过判断接收到的字节数是否为2,来确定是否成功接收到数据,并将接收到的数据存储在data数组中。该例程使用了Arduino的Wire库,实现了向IIC设备的0x00寄存器发送请求,并从设备读取2个字节的数据。在每次循环中,程序先向设备发送请求,然后等待设备的响应,读取响应数据并打印在串口上。通过这种方式,可以测试IIC从模式的正确性,并确保从设备能够正常响应主设备的请求。二、IIC协议主模式例程。原创 2023-03-25 22:00:00 · 3434 阅读 · 0 评论 -
SPI通信协议及基于Arduino的SPI通信例程
在这个例程中,我们首先定义了SPI总线上从设备的选择引脚,并在setup函数中初始化了串口和SPI总线。SPI协议使用四根线进行通信:时钟线(SCLK)、数据输入线(MOSI)、数据输出线(MISO)和从机选择线(SS)。硬件实现简单:SPI协议的硬件实现非常简单,只需要几个IO口即可完成通信,并且不需要复杂的协议解析过程,因此对于资源受限的嵌入式系统非常适用。以下是一个基于Arduino的SPI通信例程,在这个例程中,主设备(Arduino)通过SPI协议向从设备(示波器)发送命令并接收数据。原创 2023-03-23 22:30:00 · 4073 阅读 · 0 评论 -
嵌入式开发的一些经典书籍
数据结构与算法分析》(Mark Allen Weiss):这本书着重介绍了常见的数据结构和算法,包括链表、栈、队列、二叉树、散列表、图论等,强调了算法复杂度分析和性能优化的重要性,并提供了大量的示例程序和应用案例。《数据结构与算法(C++描述)》(Adam Drozdek):这本书介绍了常见的数据结构和算法,包括数组、链表、栈、队列、树、图等,使用C++语言进行描述和实现,并提供了大量的习题和解答。原创 2023-03-25 19:00:00 · 8210 阅读 · 1 评论 -
让STM32应用与存储位置无关
例如,PIC 是位置无关代码, PIE 是位置无关执行。除非你仅仅是运行一小块代码,否则开发位置无关的 STM32 完整工程,不仅仅要设置正确的编译器选项,还要保证它所链接的预编译的库不含有绝对地址引用,要保证所有源代码里没有对绝对地址的硬编码,包括修改 data 区的 Flash 起始地址,中断向量表的内容与位置,以及 GOT 的内容。我们不要被 literal pool 文字池的使用所迷惑,那个基于 PC 的操作只是为了取变量的绝对地址,例如, 0x2000 0028,并没有将绝对地址变成相对地址。转载 2022-09-14 23:15:00 · 1180 阅读 · 0 评论 -
单片机和嵌入式Linux的区别
大的系统,要给它开刀做手术,可不是一刀子下去一刀子出来就完事,还是需要针对性的去做调试,对不同的问题先有理论基础再动刀子。就是这么做的,但是难就难在,可能某个修改就一行代码,但是你就是不知道在哪里,要是你没有经验,对架构不熟悉,你绝壁要熟悉上一个星期~,我之前在中兴调一个。我今天和我一个同事聊天,他跟我说,以前他做手机开发的,做那些驱动,也就是供应商给给代码,然后推进下进度就好了。的架构,嗯,你绝对是懵逼的,因为绝壁是太复杂了,所以你想在没有完全理解的情况下就给这些代码动刀子,你做不到。转载 2022-09-14 23:45:00 · 566 阅读 · 0 评论 -
单片机集电极开路输出的结构
推挽输出的结构就是把上面的上拉电阻也换成一个开关,当要输出高电平时,上面的开关通,下面的开关断;集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为0。如果开关闭合,则有电流从1K电阻及开关上流过,但由于开关闭其它三个口带内部上拉),当我们要使用输入功能时,只要将输出口设置为1即可,这样就相当于那个开关断开,而对于P0口来说,就是高阻态了。...原创 2022-08-31 22:30:00 · 341 阅读 · 0 评论 -
几种无线协议简介
1)WiFiWi-Fi的英文全称为wirelessfidelity,在无线局域网的范畴是指“无线相容性认证”,实质上是一种商业认证,同时也是一种无线联网的技术,主要特点是带宽和范围较大,功率较大,无须布线,但是成本较高。ZigBee是一个由可多到65535个无线数传模块组成的一个无线数传网络平台,在整个网络范围内,每一个ZigBee网络数传模块之间可以相互通信,每个网络节点间的距离可以从标准的75m无限扩展。(7)LTE技术,4G网络技术,一般用于城市网络覆盖比较好的环境。......原创 2022-07-23 11:12:10 · 8315 阅读 · 0 评论 -
嵌入式软件架构划分
在项目开发中,设计一个队列,在中断服务程序中,只是将中断类型添加进该队列中,在主程序的无限循环中不断扫描中断队列是否有中断产生,有则取出队列中的第一个中断类型,进行相应的处理。(1)中断是嵌入式系统的重要组成部分,但是在标准C语言中不包含中断,许多编译器开发商在标准C上增加了对中断的支持,提供新的关键字用于标识中断服务程序(ISR),(1)模块划分的“划”是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分,合作完成系统的需求。(1)硬件驱动模块一种特定的硬件对应一个模块。...原创 2022-07-17 18:04:57 · 1461 阅读 · 0 评论 -
STM32—SPI详解
一.什么是SPISPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI是一种高速、全双工、同步通信的通信总线,被广泛应用在ADC、LCD等与MCU的通信过程中,特点就是快。二.SPI协议就像IIC、串口一样,SPI也有其通信协议,我们一般按照分层的思想来学习SPI的协议,主要分为物理层和协议层。物理层首先看一下SPI通信设备之间的常用连接方式,主机和从机之间通过三条总线和片选线组成:NSS:片选设备线,每个从机都有自己的一条单独的总线与主机连接,此总线的作用就是为主机选转载 2022-07-09 22:30:00 · 13019 阅读 · 0 评论 -
嵌入式系统、嵌入式设计软件概述
一、嵌入式系统概述1、嵌入式系统的概念国内普遍接受的概念:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2、嵌入式系统的应用领域:(1)工业领域:工程设备、智能仪表、汽车电子(2)军事领域:军事电子(3)网络领域:网络设备、电子商务(4)消费电子领域:智能家居、智能玩具、通信设备、移动存储设备3、嵌入式系统的组成:由硬件和软件组成。硬件包括:处理器、外围电路软件包括:嵌入式操作系统、嵌入式图形系统、嵌入式应用软件。嵌入式应原创 2022-06-18 21:30:00 · 1122 阅读 · 0 评论 -
FreeRTOS的任务间通信机制
任务间通信机制分为 任务间通信机制分为 任务间通信机制分为 Notify机制、 Message机制 、加锁设计接口通信三种方式。1、Notify机制FreeRTOS 每个已经创建的任务都有一控制块(task control block),任务控制块就是一个结构体变 量,用于记录任务的相关信息。 结构体变量中有一个32位的变量成员ulNotifiedValue 是专门用于任务通知 的。通过任务知方式可以实现计数信号量,二值信号量等。对于外部硬件信号或任务间偶发型事件的触发,可以采用此机制实现任务间..原创 2022-05-07 21:45:00 · 1788 阅读 · 0 评论 -
使用SEGGER Jlink下载hex文件
1、点击运行SEGGER Jlink软件2、打开一个芯片配置工程,如果没有建好的工程,则重新建一个芯片工程3、创建芯片工程文件(.jflash文件)的流程为:点击“Create a new project",然后点击“Start J-Flash”弹出“Create New Project”界面,选择“Target Device”选择目标芯片选好芯片型号后,会自动匹配大小端,选择"Target Interface”为SWD,选择...原创 2021-12-15 14:45:34 · 4795 阅读 · 0 评论 -
S32K146芯片在编译过程中遇到“section `.bss‘ will not fit in region `m_data‘”的问题
S32K146芯片在编译过程中爆出如下错误:查看ram.ld文件,查看内存分配看ram.ld文件,结合告警信息,应该是m_data的空间占用超出了分配大小。代码使用了RTOS,会分配一个总得heap空间,如果该heap空间加上APP代码使用的RAM空间超过总得RAM大小,就会出现heap空间不足的告警。现在分配的heap空间为:56*512,尝试着将该值减小,改为:20*512,再次编译代码此时发现代码编译通过,确实是RTOS分配的heap空间加上代码使用的RAM空间超.原创 2021-11-26 10:17:28 · 7100 阅读 · 0 评论 -
MDK编译错误 core_cm3.h(90): error: #5: cannot open source input file “stdint.h“: 解决方法
使用STM32开发板,安装完MDK后,新建工程,然后进行编译,但是会报错:core_cm3.h(90): error: #5: cannot open source input file "stdint.h"刚开始怀疑是"stdint.h"文件未添加到工程中,就将ARM的头文件所在的文件夹包括进工程中,编译后不再报"stdint.h"相关错误,但是会报另一个错误:..\OBJ\Tempate.axf: Warning: L6310W: Unable to find ARM librarie.原创 2021-07-03 09:41:59 · 4195 阅读 · 5 评论 -
将HEX文件通过Keil软件进行下载
需要先通过KEIL创建一个空工程,找到KEIL软件,然后打开KEIL软件原创 2021-05-29 14:20:06 · 9674 阅读 · 0 评论 -
C语言单片机程序提高代码效率的几种方法
代码效率包括两个方面内容:代码的大小和代码执行速度。如果代码精简和执行速度快, 我们就说这个代码效率高。一般情况下,代码精简了速度也相应提上来了。单片机的 ROM 和 RAM 的空间都很有限,当编程时遇到单片机的 ROM 和 RAM 的不够用的时 候,或者程序要求较高的执行速度时,我们就得面对解决代码效率问题了。提高代码效率的几种方法:一、尽量定义局部变量 单片机程序的全局变量一般是放在通用数据存储器(RAM)中,而局部变量一般是放在特殊 功能寄存器当中。处理寄存器..原创 2021-05-09 22:37:38 · 2059 阅读 · 0 评论 -
keil生成带有时间戳的hex文件
keil生成带有时间戳的hex文件(20201210) 1.使用cubemx创建keil工程 2.生成hex文件 3.keil内创建后执行命令 4.编写bat文件(20201210) 5.编译并创建你的keil工程 6.参考链接 7.修订记录 1.使用cubemx创建keil工程创建后界面如上图所示2.生成hex文件点击Options for Targe->Output,可得知输出文件为temp.hex路径为MDK-ARM\temp\temp.转载 2021-01-06 15:33:50 · 1326 阅读 · 0 评论 -
TLE9854使用MOSFET驱动电机(十):VCP增压为9V时,芯片与H桥连接各引脚电压
1、将配置文件中的“Charge Pump Output”选项设置为9V,重新编译、下载程序之后,设置PWM占空比为50%,测量各引脚电压2、VCP引脚电压为22VV(gh1) = 10V, V(gh2) =21V, V(gl1) = 5V, V(gl2) = 0VV(sh1) = 6V, V(sh2) = 12V, V(sl) = 0V3、电压波形图为:VCP:GH2:SH2:GL2:SL:GL1:...原创 2020-09-21 09:22:32 · 1325 阅读 · 5 评论 -
TLE9854使用MOSFET驱动电机(九):项目配置文件中H桥相关配置
1、打开项目的config.icwp文件,选中“BDRV”选项2、时钟频率可以选择默认3、使能Charge Pump,这个功能和芯片的VCP引脚的输出电压有关,如果没有配置该选项,则会出现VCP电压低的告警,MOSFET也会无法正常工作。未勾选该选项:使用未勾选该选项的配置文件,重新编译程序,下载完程序之后,芯片会告警:VCP引脚电压为13V,不正常。MOSFET也无法正常工作勾选了使能Charge Pump选项之后,重新编译...原创 2020-09-21 09:01:32 · 1099 阅读 · 1 评论