随笔分类 -  嵌入式软件

摘要:默认SysTick中断优先级 1 //core_cm4.h 2 3 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) 4 { 5 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return 阅读全文
posted @ 2021-04-12 14:59 不明白就去明白 阅读(3161) 评论(0) 推荐(1) 编辑
摘要:驱动文件使用的13年的ST的官方SD卡驱动,且经过安富莱硬汉的实验,最初实现热插拔,基本没有问题(没有做特别大量的测试)。但是同时加上他的代码后,我的内存卡热插拔基本无法使用,经排查,发现SD卡在SD_PowerON()阶段中的,发送CMD8: SEND_IF_COND后的响应异常,会卡在电压检测那 阅读全文
posted @ 2021-04-08 10:31 不明白就去明白 阅读(1309) 评论(0) 推荐(0) 编辑
摘要:出问题的函数如下: 1 char *calc_file_md5(const char* fw_name) 2 { 3 FRESULT result; 4 FIL File; 5 uint32_t BytesRead = 0,offset = 0,file_size = 0; 6 MD5_CTX co 阅读全文
posted @ 2021-03-09 17:30 不明白就去明白 阅读(2599) 评论(0) 推荐(0) 编辑
摘要:用stm32f407的硬件I2C,大循环等待读写。读写32K数据。 写:2949ms 读:2950ms 读写时间基本是一致的,读写的越多越一致。读写数据少时,读用时比写要少,但是数据量小的时候,差的那点可以忽略。 加入定时100us的中断,中断延时80us 写:3310ms 读:2950ms 加入耗 阅读全文
posted @ 2021-02-05 18:24 不明白就去明白 阅读(748) 评论(0) 推荐(0) 编辑
摘要:1、用信号量进行行为同步时,只能提供同步的时刻信息,不能提供内容信息。若被控制方要求得到控制方的内容信息时,可以使用消息邮箱或消息队列。2、但由于消息邮箱里只能存放一条消息,所以使用消息邮箱进行任务的同步时,需要满足一个条件:消息的产生速度总要慢于消息的消费速度,即被控制任务总是在等待消息,否则会导 阅读全文
posted @ 2020-07-18 11:51 不明白就去明白 阅读(1337) 评论(0) 推荐(1) 编辑
摘要:STM32——IAP 前几天派发紧急任务,因为程序BUG太多,每次修改都要拆机,车间受不了了,MMP,尽快完成STM32在线升级。 选用ST官方的stm32f4_iap_using_usart,软件用的ExtraPuTTY,文件协议为Ymodem。 ##Ymodem 协议简介: Ymodem通信数据 阅读全文
posted @ 2017-11-08 11:30 不明白就去明白 阅读(1842) 评论(0) 推荐(0) 编辑
摘要:今天发现自己的程序里本来想用临界代码段保护的,本来是这一对 1 { 2 ... 3 OS_ENTER_CRITICAL();, 4 .... 5 OS_EXIT_CRITICAL(); 6 } 但是发现由于当时疏忽写成了OSIntEnter();和OSIntExit();这一对函数和上面完全不是一个 阅读全文
posted @ 2017-08-17 10:22 不明白就去明白 阅读(1428) 评论(0) 推荐(0) 编辑
摘要:stm32模拟eeprom要实现flash数据页转存,实现函数为 1 /** 2 * @brief Transfers last updated variables data from the full Page to 3 * an empty one. 4 * @param VirtAddress 阅读全文
posted @ 2017-05-18 14:01 不明白就去明白 阅读(1126) 评论(0) 推荐(0) 编辑
摘要:用stm32cube生成工程的时候,要配置各个时钟,之前一直沿用的模板例程,所以还真不知道各个时钟到底是多少。上图,这是要配置的,可是自己程序配置的是怎样呢? 接下来,看程序,程序开始 1 startup_stm32f40_41xxx.s 1 Reset_Handler PROC 2 EXPORT 阅读全文
posted @ 2017-04-12 14:05 不明白就去明白 阅读(6281) 评论(0) 推荐(0) 编辑
摘要:项目需要打印一串浮点型数字,于是刚好用sprintf函数格式化,然后出现了意想不到的问题,float型数字全是0.00.。而后面的数字也出现错误。网上查找原因,才发现没有遵循AAPCS栈使用规约,看了之后发现之前写程序真是在冒险。 规约规定,栈任何时候都得4字节对齐,在调用入口得8字节对齐。在这个约 阅读全文
posted @ 2017-03-29 10:28 不明白就去明白 阅读(2404) 评论(0) 推荐(0) 编辑
摘要:最开始用stm32的flash保存数据的方法都是用原子的例程,STM32F1的话,原子的方法大概是创建一个1K或者2K的缓存,修改数据的时候,先把该扇区的所有数据写到该缓存,然后查看是否需要擦除整个扇区,一般在一个地方写的话,必须要擦除,要想不擦除,就需要一个变量记录下一次要写的地址,和数据一块保存 阅读全文
posted @ 2017-03-18 15:36 不明白就去明白 阅读(22011) 评论(4) 推荐(1) 编辑
摘要:研究了好几天stm32+lwip动态链路的处理方法,发现大多是写一些lwip移植,tcp/ip移植之类的东西,没有与实际项目相关的内容,今天发些干货,说说这些天stm32+lwip+ucosii实际项目的一些问题: 1,怎么实现系统网线的热插拔? 以我的项目为例,PHY为lan8720a。首先要介绍 阅读全文
posted @ 2016-10-22 16:54 不明白就去明白 阅读(6273) 评论(0) 推荐(2) 编辑
摘要:一 DHCP简介 DHCP是DynamicHostConfigurationProtocol之缩写﹐它的前身是BOOTP(用网络抓包软件过滤时,要输入bootp)。DHCP可以说是BOOTP的增强版本﹐它分为两个部份(C/S架构): 一个是服器端,而另一个是客户端。所有的IP网路设定资料都由DHCP 阅读全文
posted @ 2016-10-14 21:50 不明白就去明白 阅读(1373) 评论(0) 推荐(0) 编辑
摘要:while(1) { netconn_recv(udpconn,&recvbuf); if(recvbuf != NULL) { OS_ENTER_CRITICAL(); memset(udp_recvbuf,0,UDP_RX_BUFSIZE); for(q=recvbuf->p;q!=NULL;q 阅读全文
posted @ 2016-09-29 14:07 不明白就去明白 阅读(845) 评论(0) 推荐(0) 编辑
摘要:Code指存储到flash【Rom】中的程序代码。 ZI英语是zero initial,就是程序中用到的变量并且被系统初始化为0的变量的字节数,keil编译器默认是把你没有初始化的变量都赋值一个0,这些变量在程序运行时是保存在RAM中的。 RW是可读可写变量,就是初始化时候就已经赋值了的,RW + 阅读全文
posted @ 2016-08-18 11:48 不明白就去明白 阅读(812) 评论(0) 推荐(0) 编辑
摘要:(转) 栈增长和大端/小端问题是和CPU相关的两个问题. 1,首先来看:栈(STACK)的问题. 函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f10x_hd.s里面,开 阅读全文
posted @ 2016-07-08 14:32 不明白就去明白 阅读(1399) 评论(0) 推荐(0) 编辑
摘要:ucosii消息邮箱使用大致分三步: 1,OS_EVENT *Str_Box; Str_Box=OSMboxCreate(0); 2,char s;或者 char *s; OSMboxPost (Str_Box,(void*)s); 3, 对应的 char s; ss=(char)OSMboxPen 阅读全文
posted @ 2016-01-25 16:34 不明白就去明白 阅读(608) 评论(0) 推荐(0) 编辑
摘要:IAR编程。 2015.8.18 上午编写的独立看门狗的程序,模块化编写iwdg.c iwdg.h.。只把iwdg.c和iwdg.h加入进去了。编译时提示no definefd uart2_send8((u8)data)...之类的东西,找错了找了将近1个小时,百思不解。后来才发现自己并没有添加st 阅读全文
posted @ 2015-08-19 11:57 不明白就去明白 阅读(165) 评论(0) 推荐(0) 编辑
摘要:STM8S的GPIO主要功能: ● 端口的各个位可以被单独配置 ● 可选择的输入模式:浮动输入和带上拉输入 ● 可选择的输出模式:推挽式输出和开漏输出 ● 数据输入和输出采用独立的寄存器 ● 外部中断可以单独使能和关闭 ● 输出摆率控制用以减少EMC噪声 ● 片上外设的I/O功能复用 ● 当作为模拟 阅读全文
posted @ 2015-06-25 19:55 不明白就去明白 阅读(761) 评论(0) 推荐(0) 编辑
摘要:昨天被安排做别的工作,耽误一天,今天继续写,坚持学习。 1,STM8S的4种时钟源可用做主时钟: ● 1-24MHz高速外部晶体振荡器(HSE) ● 最大24MHz高速外部时钟信号(HSE user-ext) ● 16MHz高速内部RC振荡器(HSI) ● 128KHz低速内部RC(LSI) 各个时 阅读全文
posted @ 2015-06-25 17:28 不明白就去明白 阅读(1089) 评论(0) 推荐(0) 编辑