stm32 freertos移植stm32 串口多少内存

The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.查看: 2594|回复: 2
FREERTOS,关于STM32的串口初始化的问题,
主题帖子精华
中级会员, 积分 269, 距离下一级还需 231 积分
在线时间15 小时
&碰到这个问题,好奇葩的,望大神指点12
请教问题&关于STM32&UART
问题,如下,
在初始化UART的时候,发现USART的波特率寄存器,一致为0,写不进去,后来一步步的跟踪调试发现如下情况
调用USART_Init&这个函数在初始化的时候
在USART_Init&下有这么RCC_GetClocksFreq一个函数,是计算时钟频率的,
在RCC_GetClocksFreq&这个函数下,有一个,关于时钟的频率表
APBAHBPrescTable
它是静态表,初始化值如下
3de8b47a9b2f8_228.jpg (0 Bytes, 下载次数: 0)
22:54 上传
这个值是官方给的,
而我在跟踪调试的时候
APBAHBPrescTable&值变成这样了,是啥情况,
d220fb9ee1f917f7f4dfe99e2d91f550_475.jpg (0 Bytes, 下载次数: 0)
22:54 上传
这个工程代码里面,用到了FREERTOS,这个系统
请教???!!!
6d51cabfc6fa_881.jpg (0 Bytes, 下载次数: 0)
22:54 上传
工程文件上传了,
,针对这个问题,我仿真用了原子的代码,发现初始化STM32 的USART1完全没问题,
望有知道解决办法的人指点下
这个是我今天碰到的第二个问题,第一个问题是上午碰到的,也是这个工程加了FREERTOS的,在加了文件系统之后,发现无法进行仿真,其现象如下:
跟踪启动文件的
; Reset handler
Reset_Handler & PROC
& & & & & & & & EXPORT &Reset_Handler & & & & & & [WEAK]
& & & & & & & & IMPORT &__main
& & & & & & & & IMPORT &SystemInit
& & & & & & & & LDR & & R0, =SystemInit
& & & & & & & & BLX & & R0 & & & & & & &&
& & & & & & & & LDR & & R0, =__main
& & & & & & & & BX & & &R0
& & & & & & & & ENDP
这部分代码,发现 __main的地址,是0X
而我在主工程里面发现 main函数的地址 是,0x08002dfe,
发现两个地址,对不上号,所以一直无法进行仿真,
后来,根据某位大神的建议,对于启动代码,修改如下
& & & & & & & & EXPORT &Reset_Handler & & & & & & [WEAK]
& & & & & & & & IMPORT &main
& & & & & & & & ;LDR & & R0, = SystemInit_ExtMemC initialize external memory controller
& & & & & & & & ;BLX & & R0
& & & & & & & & ;LDR & & R1, = __initial_sp & & & &; restore original stack pointer
& & & & & & & & ;MSR & & MSP, R1 & & & & & & & & &&
& & & & & & & & LDR & & R0, =main
& & & & & & & & BX & & &R0
& & & & & & & & ENDP
这样修改之后,就能仿真了,
希望我碰到的这个问题,对以后的朋友有帮助,
16:29 上传
点击文件名下载附件
7.15 MB, 下载次数: 122
主题帖子精华
金钱104809
在线时间654 小时
最开始的时候,这个表的数据应该是没变的,你单步跟踪,看到哪个位置开始,才变化?然后就分析这个语句/函数。
__main,并不是main函数的入口,这个
详见(转帖):
&&&当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序,即呼叫主应用程序。最简单的一种情况是:
&&&&IMPORT&main
&&&&B&main
&&&&直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。
&
&&&&在ARM&ADS环境中,还另外提供了一套系统级的呼叫机制。
&&&&IMPORT&__main
&&&&B&__main
&&&&__main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,最后自动跳转到main()。所以说,前者是库函数,后者就是我们自己编写的main()主函数;
&&&&因此我们用的B&__main其实是执行库函数,然后该库函数再调用我们的main()&函数,因此在单步调试时会看到先要跑一段程序(其实是库函数),然后再单步到我们自己的main函数(这个同时也说明如果有B&__main&则就对应必须有main函数,否则编译出错),如果我们用&B&main来进入我们的主函数的话,那在单步调试时就看到直接进入到我们自己的main函数了,中间不会看到其他程序;
&&&&那么用B&__main和用B&main&这两这进入我们的main函数方式有什么不同呢?
&&&&如果采用前者则会由编译器加入一段"段拷贝"程序,即我们说的从加载域到执行域转化程序;而采用后者就没有这个了,因此如果要进行&"段拷贝"只能自己动手编写程序来实现了,完成段拷贝后就可以进入我们的主函数了,当然这个主函数不一定是叫做main(),可以起个其他好听的名字,这个有别于使用B&__main方式;不管采用哪种方式进入我们的程序,都要有一段"段拷贝"程序,跑完了段拷贝后才能可以进入我们主程序了!(顺便提一下:startup.s这个文件并没有所谓的"段拷贝"功能,再看也无益!)
&
&&&&对含有启动程序来说,"执行地址与加载地址相同"不容易实现:
&&&&如果执行地址与加载地址相同哪当然不需要做"段拷贝",但是个人理解编译器还会加入"段拷贝"程序(如果用B&__main的话),只是因为条件不满足而不执行而已;但是对含有启动程序来说,"执行地址与加载地址相同"就不容易了.因为启动程序是要烧到非易失存储器里,用来在上电执行的,而这个程序必定会有RW段,如果RW放在非易失存储器,如FLASH,那就不好实现RW功能了,因此要给RW移动到能够实现RW功能的存储器,如SRAM等.因此,对含有启动程序来说,"执行地址与加载地址相同"就不容易实现;程序的入口点在C&库中的__main&处,在该点,库代码执行以下操作:
1.&将非零(只读和读写)运行区域从其载入地址复制到运行地址。
2.&清零ZI&区域。
3.&跳转到__rt_entry。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 269, 距离下一级还需 231 积分
在线时间15 小时
RCC_GetClocksFreq
是在进入这个函数的时候发生改变的
Powered by21ic官方微信-->
后使用快捷导航没有帐号?
查看: 2607|回复: 10
串口9位数据位如何发送和接收?
&&未结帖(10)
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
本帖最后由 maverics 于
20:25 编辑
用stm32f1实现9位数据位的串口发送和接收,理解的比较有限,基本就是在8位数据位的基础上加一个高位作为标记,但是如何发送和接收处理不太明白,是否有高手搞过,指点一下,或者推荐例程参考一下,另外,9位数据位如何通过串口调试助手之类的PC软件实现发送和接收,谢谢指点!:)
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:38.00
主题帖子积分
好像PC软件串口不太支持吧;
我们以前考虑用9位模式,第9位用0,1来区分发的是命令还是数据;
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
mmuuss586 发表于
好像PC软件串口不太支持吧;
我们以前考虑用9位模式,第9位用0,1来区分发的是命令还是数据; ...
嗯,我现在也是在用第9位的0和1来区分命令和数据,请问你实现了吗,能不能再说的详细点:)
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:38.00
主题帖子积分
maverics 发表于
嗯,我现在也是在用第9位的0和1来区分命令和数据,请问你实现了吗,能不能再说的详细点 ...
我现在是通过协议加了命令区分的;
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
没有新的回复了:(
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
用9位还真是没用过,帮你顶一下吧!!!
电力监控仪表、STM32、物联网
主题帖子积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
第9位可以做奇偶校验位,一般串口助手上面都有这个功能的
RTX-&μCOS-II-&FreeRTOS-&embOS-&μCOS-III
μCGUI-&emWin-&FatFs-&DSP
主题帖子积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
初级工程师, 积分 2069, 距离下一级还需 931 积分
本帖子中包含更多资源
才可以下载或查看,没有帐号?
RTX-&μCOS-II-&FreeRTOS-&embOS-&μCOS-III
μCGUI-&emWin-&FatFs-&DSP
技术新星奖章
人才类勋章
技术领袖奖章
人才类勋章
时间类勋章
坚毅之洋流
发帖类勋章
荣誉元老奖章
等级类勋章
技术高手奖章
人才类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
技术奇才奖章
人才类勋章
时间类勋章STM32(12)
本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机,具体下面详谈。。。
void USART1_IRQHandler(u8 GetData)
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志.
GetData = UART1_GetByte(BackData);
//也行GetData=USART1-&DR;
USART1_SendByte(GetData);
//发送数据
GPIO_SetBits(GPIOE, GPIO_Pin_8 ); //LED闪烁,接收成功发送完成
delay(1000);
GPIO_ResetBits(GPIOE, GPIO_Pin_8 );
这是最基本的,将数据接收完成后又发送出去,接收和发送在中断函数里执行,main函数里无其他要处理的。
优点:简单,适合很少量数据传输。
缺点:无缓存区,并且对数据的正确性没有判断,数据量稍大可能导致数据丢失 。
void USART2_IRQHandler()
if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中断产生
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中断标志
Uart2_Buffer[Uart2_Rx_Num] = USART_ReceiveData(USART2);
Uart2_Rx_Num++;
if((Uart2_Buffer[0] == 0x5A)&&(Uart2_Buffer[Uart2_Rx_Num-1] == 0xA5))
//判断最后接收的数据是否为设定值,确定数据正确性
Uart2_Sta=1;
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出
USART_ClearFlag(USART2,USART_FLAG_ORE);
USART_ReceiveData(USART2); //读DR
if( Uart2_Sta )
for(Uart2_Tx_Num=0;Uart2_Tx_Num & Uart2_Rx_NUart2_Tx_Num++)
USART2_SendByte(Uart2_Buffer[Uart2_Tx_Num]); //发送数据
Uart2_Rx_Num = 0; //初始化
Uart2_Tx_Num = 0;
Uart2_Sta = 0;
这是加了数据头和数据尾的接收方式,数据头和尾的个数可增加,此处只用于调试之用。中断函数用于接收数据以及判断数据的头尾,第二个函数在main函数里按照查询方式执行。
优点:较简单,采用缓存区接收,对提高数据的正确行有一定的改善 。
缺点:要是第一次数据接收错误,回不到初始化状态,必须复位操作 。
vvoid USART2_IRQHandler()
if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中断产生
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中断标志.
Uart2_Buffer[Uart2_Rx] = USART_ReceiveData(USART2);
Uart2_Rx++;
Uart2_Rx &= 0x3F; //判断是否计数到最大
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出
USART_ClearFlag(USART2,USART_FLAG_ORE); //读SR
USART_ReceiveData(USART2); //读DR
if( Uart2_Tx != Uart2_Rx )
USART2_SendByte(Uart2_Buffer[Uart2_Tx]); //发送数据
Uart2_Tx++;
Uart2_Tx &= 0x3F; //判断是否计数到最大
采用FIFO方式接收数据,由0x3F可知此处最大接收量为64个,可变,中断函数只负责收,另一函数在main函数里执行,FIFO方式发送。
优点:发送和接收都很自由,中断占用时间少,有利于MCU处理其它。
缺点:对数据的正确性没有判断,一概全部接收。
void USART2_IRQHandler()
if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中断产生
USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中断标志
Uart2_Buffer[Uart2_Rx] = USART_ReceiveData(USART2);
Uart2_Rx++;
Uart2_Rx &= 0xFF;
if(Uart2_Buffer[Uart2_Rx-1] == 0x5A) //头
Uart2_Tx = Uart2_Rx-1;
if((Uart2_Buffer[Uart2_Tx] == 0x5A)&&(Uart2_Buffer[Uart2_Rx-1] == 0xA5)) //检测到头的情况下检测到尾
Uart2_Len = Uart2_Rx-1- Uart2_Tx; //长度
Uart2_Sta=1; //标志位
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出
USART_ClearFlag(USART2,USART_FLAG_ORE); //读SR
USART_ReceiveData(USART2); //读DR
if( Uart2_Sta )
for(tx2=0;tx2 &= Uart2_Ltx2++,Uart2_Tx++)
USART2_SendByte(Uart2_Buffer[Uart2_Tx]); //发送数据
Uart2_Rx = 0; //初始化
Uart2_Tx = 0;
Uart2_Sta = 0;
数据采用数据包的形式接收,接收后存放于缓存区,通过判断数据头和数据尾(可变)来判断数据的“包”及有效性,中断函数用于接收数据和判断头尾以及数据包长度,另一函数在main函数里执行,负责发送该段数据。
优点:适合打包传输,稳定性和可靠性很有保证,可随意发送,自动挑选有效数据。
缺点:缓存区数据长度要根据“包裹”长度设定, 要是多次接收后无头无尾,到有头有尾的那一段数据恰好跨越缓存区最前和最后位置时,可能导致本次数据丢失,不过这种情况几乎没有可能
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6439次
排名:千里之外
原创:14篇
(4)(1)(2)(5)(8)查看: 19271|回复: 259
MDK环境下让STM32用上FreeRTOS v8.1.2和FreeRTOS+Trace v2.6.0全过程
本帖最后由 tanglei979 于
15:17 编辑
& & 本人选择使用FreeRTOS的最大原因就是想使用FreeRTOS+Trace,这是一个图形化的Debug工具,利用这个工具,你可以看到各线程、中断、消息队列等的运行历史,对于新手来说,学习一个操作系统的运行原理是个好工具,而对于工程应用人员而言,它又是一个不可多得的辅助工具,它能让你获得一种“掌控”的感觉,实在是非常好用。现在我把我建立模板工程的整个过程分享给大家,希望大家也能用上这款神器。& &&&& &&&FreeRTOS+Trace分为两部分,一部分是位于目标系统的C源码库,你需要将其加入到你的MCU项目中,另一部分是PC机上的软件。FreeRTOS+Trace的运行原理图如下,目标系统在RAM中建立一个缓冲区(大容量数组),目标系统的操作系统在运行的过程中,每次产生的系统事件都会保存到该缓冲区,调试人员可以在PC上利用任意调试工具将这个缓冲区dump出来存到一个文件,再使用PC的FreeRTOS+Trace软件打开这个文件分析,并且dump时你并不需要知道缓冲区的具体地址,而是可以直接把整个RAM都dump出来,软件会自动分析。值得一提的是FreeRTOS+Trace软件集成了Jlink菜单,可以直接读取RAM区。(我不知道怎样利用Jlink工具dump内存,只知道J-Link Commander里的mem命令可以读RAM,但是不能保存成文件,有谁知道的告诉我一声)
& & 我有两个STM32的板,我准备选择STM32F103C8T6的这块板作为样板来作陈述,因为它的资源较少,能在其运行的程序在其它更大资源的芯片上肯定是可以运行的。
& & 本次模板工程使用的是MDK4.23环境,目标芯片为STM32F103C8T6,外设标准库版本为3.5,FreeRTOS版本为8.1.2,FreeRTOS+Trace版本为2.6.0。FreeRTOS源码中有针对STM32的DEMO,大家可以用来参考,这样只要修修补补不用移植了。& & 提示:FreeRTOS+Trace是与FreeRTOS的源码包绑定的,下载任何一个FreeRTOS版本的源码包,里面都有FreeRTOS+Trace的源码,但是这个源码需要与PC的上位机配套,当前能够下载的上位机软件是2.6.0版,而FreeRTOS的最新版本是8.1.2,其配套的FreeRTOS+Trace的版本就是2.6.0。& & 建立过程如下:一、建立MDK工程,加入官方3.5固件库和FreeRTOSv8.1.2源码,使其正常运行& & 1.从ST官网下载3.5版固件& & 2.从FreeRTOS官网下载FreeRTOS v8.1.2源码& & 3.建立一个目录,将代码组织起来,我的目录是下面这样的& && &
& & 4.打开MDK,建立工程,选择目标芯片为STM32F103C8,建立目录加进文件,我的目录是下面这样的。其中FreeRTOSConfig.h文件是从针对STM32的DEMO工程中复制出来的,port.c使用的是\FreeRTOS\Source\portable\RVDS\ARM_CM3目录下的,heap_2.c在\FreeRTOS\Source\portable\MemMang目录下& &
& & 5.添加预编译定义和头文件包含目录& &
& & 6.为操作系统修改中断入口名,我是直接修改了port.c文件,而没有修改startup_stm32f10x_md.s文件,因为修改port.c只需添加三条语句,如下& &
& & 7.编写测试源码,我只做了任务切换的测试,源码如下,建立了三条闪灯的任务,任务优先级依次为3、4、5(注意FreeRTOS里的任务优先级与uCOS相反,即数字越大级别越高,IDLE任务优先级最低,则为0)& &
& & 8.在编译之前,需要检查内存堆的范围是否过大,过大就放不进STM32F103C8的20K RAM了。查看FreeRTOSConfig.h中的configTOTAL_HEAP_SIZE定义,我定义了10K,这10K就是留给操作系统动态分配的,你可以根据需要把它设置得更大一点,只要保证编译完毕后RAM占用不超过20K即可。& &
& & 9.编译、下载、测试,发现三个灯都在闪就对了,系统在调度任务了。& & 10.如果不想在Flash中调试,也可以在RAM中调试,具体可以百度或参考我上传的项目。& & STM32 FreeRTOSv8.1.2 MDK工程模板:二、在已有FreeRTOS的项目基础上加入FreeRTOSPlusTracev2.6.0源码,修改相应设置,使FreeRTOSPlusTrace能够正常Trace& & 1.从下载的FreeRTOS源码包中复制FreeRTOS-Plus-Trace目录到工程目录,现在我的目录如下& &
& & 2. 把\FreeRTOS-Plus-Trace\ConfigurationTemplate\trcConfig.h复制到App目录下& & 3. 添加文件到MDK工程中,现在我的工程目录如下图& &
& & 4.向包含目录中添加”..\FreeRTOS-Plus-Trace\Include”,如下图& &
& & 5.在FreeRTOSConfig. h中,设置configUSE_TRACE_FACILITY为1,以保证打开FreeRTOS+Trace功能,并在末尾添加#include &trcKernelPort.h&来包含trace相关头文件& & 6.设置trcConfig.h中EVENT_BUFFER_SIZE项为一个适当值,它表示要记录多少条事件,一般一条事件占用4个字节,我将它设置为1024,则将占用4K的内存,能存大概1000条左右的事件。& & 7.在main.c中添加下列代码(68行~73行)
& & 8.编译,发现一堆的语法错误,其它错误很好解决,除了trcHardwarePort.c中有四条在一起且类似的错误,错误信息是这样的:& & ..\FreeRTOS-Plus-Trace\trcHardwarePort.c(65): error:&&#20: identifier &asm& is undefined& & 可能因为源码是针对IAR编写的,没有考虑到MDK的特殊性,我的作法是将原本代码注释掉替换为内联汇编代码& & 原来的代码:& &
& & 替换后的代码:& &
& & 9.编译、下载、调试。当灯在闪时,说明系统运行正常了,接下来终于可以请出我们的神器FreeRTOSplusTrace PC软件了。& && &&&加入FreeRTOSplusTrace的MDK工程模板:三、FreeRTOSplusTrace PC软件共分三个版本FreeEdition、Standard Edition、Pro. Edition,全功能高级版可以试用30天,30天后只能使用功能限制的免费版,为了能够不受限制,我把它装到了vmware虚拟机里面,并且在安装之前take snapshot一下,这样30天过后,将vmware退回到snapshot点,再安装一遍FreeRTOSplusTrace又可以试用30天了,当然如果有人破解了就不用这么麻烦了。FreeRTOSplusTrace PC软件有7M,我上传不了,大家去官网去下载吧。& & 1.下载页面在可以找到,它依赖.net4.0运行,需要安装.net4.0库。& & 2.打开FreeRTOSplusTrace软件,欢迎界面如下图,点击右下角Evaluate ...按钮,进入主界面,如果你插入了Jlink,Jlink菜单下的选项是可选的。& &
& & 3.点击菜单Jlink-&Read Trace,填入RAM地址和大小(不知道RAM地址和大小?看MDK菜单Project-&Options for xxx-&Target选项卡-&IRAM1),点击OK,读出来如果东西少或出错,说明时间太短,过一会再读试试。& &
& & 4.软件结果如下图& &
& & 5.勾选右下角的Kernel Notices和Kernel Service Calls,放大,就可以清晰的看到系统运行的过程了,三条LED线程,打开CPU Load Graph,可以看到CPU占用率目测不及0.1%。& &
& & 四、模板只有三个闪灯任务,各位看官没看爽,没关系,下面承上官方Demo。其中Communication View便于理解官方Demo消息传递过程,我没详细研究,看起来很酷的样子。加入官方Demo的MDK工程(内含dump文件,可直接用FreeRTOSplusTrace.exe打开):& &
本帖子中包含更多资源
才可以下载或查看,没有帐号?
我顶你酷贴
厉害厉害,楼主有心。
好文,freertos升级是不是过快了些?
酷,果断收藏
必须先Mark&&freertos
楼主好厉害啊; 果断顶一下
感谢分享,楼主写得相当呢详细。
牛叉叉啊& && && && && && && && && && && && && &&&
给楼主申酷,这么用心
很好的帖子啊,不顶不行,先收藏起来,空下来耐心学习
FreeRTOS+Trace& &mark
good,很不错
好贴,图文并茂
写的很好啊,学习了啊~~
楼主V5!!!!
好像挺牛逼的样子,比uC强,动不动就搞收费,看来要改Free了
FreeRTOS&&STM32&&不错
支持,真心不错的说
真是好帖。顶起。
关于用jlink读数据,函数是在JlinkArm.dll里面的,在你的项目中动态加载这个dll,然后引入相应的函数就行了,下面是我在Qt里面封装的代码:
JlinkARM::JlinkARM()
{
jlinkdll.setFileName(&JLinkArm.dll&);
if(jlinkdll.load())
{
& & qDebug()&&&load JlinkArm.dll OK!&;
& & this-&Open = (pOpen)jlinkdll.resolve(&JLINKARM_Open&);
& & if(this-&Open)
& & {
& && &qDebug()&&&Link to Open is OK!&;
& & }else
& & {
& && &&&qDebug()&&&Link to Open error!&;
& & }
& & this-&Close = jlinkdll.resolve(&JLINKARM_Close&);
& & this-&GetSN = (pGetSN)jlinkdll.resolve(&JLINKARM_GetSN&);
& & this-&GetDllVersion = (pGetDllVersion)jlinkdll.resolve(&JLINKARM_GetDLLVersion&);
& & this-&GetFirmwareString = (pGetFirmwareString)jlinkdll.resolve(&JLINKARM_GetFirmwareString&);
& & this-&GetHardwareVersion = (pGetHardwareVersion)jlinkdll.resolve(&JLINKARM_GetGetHardwareVersion&);
& & this-&GetOEMString = (pGetOEMString)jlinkdll.resolve(&JLINKARM_GetOEMString&);
& & this-&GetId = (pGetId)jlinkdll.resolve(&JLINKARM_GetId&);
& & this-&ReadMemU8 = (pReadMemU8)jlinkdll.resolve(&JLINKARM_ReadMemU8&);
& & this-&ReadMemU16 = (pReadMemU16)jlinkdll.resolve(&JLINKARM_ReadMemU16&);
& & this-&ReadMemU32 = (pReadMemU32)jlinkdll.resolve(&JLINKARM_ReadMemU32&);
& & this-&WriteU8 = (pWriteU8)jlinkdll.resolve(&JLINKARM_WriteU8&);
& & this-&WriteU16 = (pWriteU16)jlinkdll.resolve(&JLINKARM_WriteU16&);
& & this-&WriteU32 = (pWriteU32)jlinkdll.resolve(&JLINKARM_WriteU32&);
& & this-&SetSpeed = (pSetSpeed)jlinkdll.resolve(&JLINKARM_SetSpeed&);
& & this-&Reset = (pReset)jlinkdll.resolve(&JLINKARM_Reset&);
& & this-&TIF_Select = (pTIF_Select)jlinkdll.resolve(&JLINKARM_TIF_Select&);
}else
{
& & qDebug()&&&load JlinkArm.dll error!&;
}
}复制代码
关于用jlink读数据,函数是在JlinkArm.dll里面的,在你的项目中动态加载这个dll,然后引入相应的函数就行了 ...
JLink驱动自带的工具不知道可以不可以利用SWD dump呢,之所以要这样,是因为JTAG口一般用10针,我有的板用的SWD接口,只有四根线,用FreeRTOS+Trace直接读取会失败。
好像挺牛逼的样子,比uC强,动不动就搞收费,看来要改Free了
uc也有相应的ucTrace,代码和PC端软件同样由percepio公司提供,只是FreeRTOS是免费的,这是个优势
JLink驱动自带的工具不知道可以不可以利用SWD dump呢,之所以要这样,是因为JTAG口一般用10针,我有的板 ...
可以的啊,通过JLINKARM_TIF_Select函数可以设置模式是JTAG还是SWD的,默认情况下jlink用的jtag。你用jlink命令行的时候需要发命令切换,然后再读写的。
还能这么搞,真不错。
关注SWD是否能用,因为现在做板都不留JTAG口了。
楼主做事如此有调理, 任督二脉显然早已打通...
好料,Mark之
顶一个!!
楼主做事如此有调理, 任督二脉显然早已打通...
哈哈,惭愧,一直从这里获取,从未付出过
可以的啊,通过JLINKARM_TIF_Select函数可以设置模式是JTAG还是SWD的,默认情况下jlink用的jtag。你用jli ...
我在jlink-commander里输入?,看到帮助里只有个mem命令可以读出来,但不知道怎么保存成文件,还请明示
不错的东西
这个真不错,有破解就更好了
牛人,谢谢分享!!!
我去 mark一记 仔细看
牛叉& && && && && && &&&
谢谢分享,标记学习
学&&学& &&&
记号!以下载来学习
好资料 , 楼主用心啦&&, 顶一个& &!
记号,很高大上
起来很厉害的样子。
好东西,收藏了
NC~~收藏之
我在jlink-commander里输入?,看到帮助里只有个mem命令可以读出来,但不知道怎么保存成文件,还请明示 ...
看来这个FREERTOS还真是极好的,得找个时间弄弄;初次使用,用哪个版本比较经典,这样不致于掉太多坑里面;
本帖最后由 tanglei979 于
11:11 编辑
看来这个FREERTOS还真是极好的,得找个时间弄弄;初次使用,用哪个版本比较经典,这样不致于掉太多坑里面 ...
我也没用过几个版本,以前在学校用的ucos-ii,现在工作了项目里要用这种小型操作系统,又因为FreeRTOS是免费的,所以我去官网下载的新版本。
FreeRTOS的出现也不是一天两天的事了,说明稳定性还是不错的,我一般都选补丁版号最大的,也就是8.x.x中x最大的版本,现在7.x.x中最大的是7.6.0,8.x.x最大的就是8.1.2,8.x.x最大的改动是增加了event flag功能。
看了楼主的帖子。立马转战FreeRTOS了~ 
必须支持啊............不错..
楼主厉害啊,我板子都没留jtag 和swd口啊,用串口可以不?
酷贴。,顶啊
此帖要火了
挺厉害的!很高端啊
楼主厉害啊,我板子都没留jtag 和swd口啊,用串口可以不?
理论上应该可以,JTAG和SWD只是工具,它比较方便dump RAM而已,如果需要通过串口把内存读出来,那么您需要写这部分的串口通信程序,例如找个能保存成文件的串口调试助手,调试助手发个指令,MCU就把RAM区一个字节一个字节地传到PC,调试助手再存成文件,再用FreeRTOS+Trace打开应该就可以!!
感谢楼主的详细教程!学习了。
make....仔细看看
FreeRTOS+Trace& &mark
看 FreeRTOS+Trace
这个nb,收藏了
谢谢楼主,学习了
真实好东西,楼主整理的太好了,敬佩!
这个真的不错,对于开发时分析任务调度合理性有很大帮助
好 东西&&先 顶起来!!
这软件的免费版很多功能没法用,,有xx版么?
好教程,学习。
挺高端的,很厉害
这软件的免费版很多功能没法用,,有xx版么?
30天内试用的是全功能版,30天后才会限制功能
30天内试用的是全功能版,30天后才会限制功能
对呀,然后呢?
用freertos一段时间了,一直不知道还有这个功能。。呵呵太不专业了。。。。
楼主好人,写的相当详细!
可以备用,功能好强大
太酷了!谢谢楼主
非常好的帖子,顶你~
对呀,然后呢?
目前没有XX版,只有用的人多了才会有人去XX!!
感谢,正好在看freertos
好贴!!!收藏!!!
果然牛啊,可以玩玩
厉害,楼主有心。
顶贴,正在学习freeRTOS中
做个标记,学习!!!
非常感谢,赶紧上
FreeRTOS牛逼
一直苦于MDK没有FREERTOS的调试插件,又不能换IAR,有空要好好研读此贴了!!
谢谢,打算下个项目用这个os
Trace能移植到ucos吗?
写的很详细,谢谢!
强帖,留名。改天找时间好好学习!
很用心,感谢,楼主用这个在产品上吗?
参考参考!
感觉像是软文,新手的话,排版还真不错
厉害厉害,楼主有心。
楼主好厉害啊; 果断顶一下
这是分析系统任务调度的利器啊
用过FreeRTOS,没想到还有如此神器,学习了
FreeRTOS 这个真的就是调试程序的神器那.谢谢楼主分享
FreeRTOS v8.1.2??这么快啊 我还在用5.0啊!
记号!准备学习。
阿莫电子论坛, 原"中国电子开发网"

我要回帖

更多关于 freertos stm32 例程 的文章

 

随机推荐