![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Stm32
贝特菲尔
这个作者很懒,什么都没留下…
展开
-
stm32 关于ENC28J60TCP和UDP的实现
程序运行流程:原创 2014-11-21 20:47:26 · 3139 阅读 · 0 评论 -
void HAL_Delay(__IO uint32_t Delay) 函数溢出的问题
计数器的更新计数器uwTick是在每次Systick中断中加一更新,此处配置Systick中断为每1ms中断一次。uwTick为uint32_t类型,那么uwTick的最长计时为0xFFFFFFFF毫秒(约为49.7天),也就是说 uwTick 会在系统持续运行49天后溢出清零。函数的实现void HAL_Delay(__IO uint32_t Delay){ uint32_t ticksta原创 2017-08-23 17:51:29 · 3710 阅读 · 1 评论 -
Stm32 在线升级要点
Stm32 在线升级要点具体代码不再多做介绍,此处仅介绍怎样一些需要注意的地方RCC 时钟只能配置一次,RCC 时钟最好在 IAP 中进行配置,使单片机工作在一个稳定的状态在 IAP代码跳转前禁用已经开启过得中断,然后在App代码中重现开启中断。如果系统相关模块并未启动,而中断就已经开启,会直接导致系统出错。(例如systick中断)如果在App代码中并未涉及到相关时钟总线的初始化,那么需要注原创 2017-08-21 18:02:11 · 469 阅读 · 1 评论 -
Cortex-M3 内核HardFault错误调试定位方法
首先更改startup.s的启动文件把里面的HardFault_Handler代码段换成下面的代码: HardFault_Handler\ PROC IMPORT hard_fault_handler_c ;函数申明 TST LR, #4 ;根据LR.2判断使用的什么堆栈 ITE EQ MRSEQ R0, MSP ;使用MS转载 2017-07-25 11:52:00 · 2461 阅读 · 0 评论 -
LCD 多层菜单
基本结构体定义菜单项定义struct menu{ uint8_t range_from; //当前显示的项开始序号 uint8_t item_count;//项目总数 uint8_t selected;//当前选择项 struct menu_tag *menu_tag; struct menu *sub_menus[MAX_SUB_MENU];//子菜单原创 2017-07-12 18:55:21 · 1941 阅读 · 0 评论 -
usb传输
首先,要明白两个观点。第一,USB总线上所有的事务(数据流传输)都是由USB Host主动发起,而USB设备永远永远都是只是被动地接收然后处理USB Host发来的各种各样的命令(要求)。第二,中断是USB Host和USB设备之间的信令员,USB Host所有的要求都是通过这个信令员即中断来通知USB设备。我们可以将整个USB数据通信过程看成是由一个一个的数据包构成,而这些数据包又分很多类,比如:转载 2017-06-02 16:06:50 · 358 阅读 · 0 评论 -
fatfs文件系统
hal库中的FATFS使用STM32CubeMX添加FATFS下的user-defined,打开工程,查看main()可以发现代码中先调用了MX_FATFS_Init()函数,而此函数又调用了 FATFS_LinkDriver()函数,继续查找FATFS_LinkDriver()函数,发现此函数第一个变量为Diskio_drvTypeDef类型typedef struct{ DSTATUS (转载 2017-06-05 18:42:31 · 3441 阅读 · 0 评论 -
开漏输出和推挽输出
开漏输出: 就是输出电压在低电平时接地,高电平时高阻态。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电源电压。这种方式适合在连接的外设电压比单片机电压低的时候,也可以多个开漏输出相连形成与门电路(IIC)。 推挽输出: 使用两只三极管构成一级放大器电路,分别对输出高电平和输出低电平进行放大,增强驱动能力。原创 2017-05-20 11:05:37 · 588 阅读 · 0 评论 -
使用STM32CubeMX创建STM32F407工程
使用STM32CubeMX创建STM32F407工程创建项目新建工程,选择对应的stm32f407芯片 设置相关引脚pinMiddleWares:因为需要使用网络,选中LWIP。Peripherals:配置ETH使能,在右侧的引脚配图中相关引脚 配置RCC,使用外部晶振如图所示 配置SYS,配置系统时钟中断,使用ARM内部时钟 配置USART1,模式为异步,不使用硬件流控原创 2017-05-08 18:55:07 · 10193 阅读 · 0 评论 -
Stm32作为主设备使用DMA接收SPI数据
DMA发送中断和DMA接收中断必须都打开,如果接受中断不开,貌似只能接收一次成功。同时DMA接收比发送优先级要高,这条没有测试过!!!以下代码在stm32f407上测试通过#include "spi_dma.h"#include "stm32f4xx_dma.h"#include "stm32f4xx.h"#include "spi.h"#include "SRAM.h原创 2015-03-18 11:30:20 · 11936 阅读 · 1 评论 -
十进制字符串转化成十六进制字符串(不定长)
这里写自定义目录标题设计思路一般思路对于不定长字符长怎么处理?将数据添加到buffer中完整代码设计思路一般思路一般如果需要将十进制转化成十六进制,先定义一个int data,然后从高位到地位遍历十进制字符串,将数据一位位的添加到data中,最后将data转成十六进制字符串输出就可以了,那么先来看看怎么转化成dataint string2int(const char *src_buf){...原创 2019-07-25 15:58:23 · 272 阅读 · 0 评论