STM32技术
yongyooh
这个作者很懒,什么都没留下…
展开
-
FATFS在U盘的底层操作函数
在STM32的官方USB库里,有一个名字叫usbh_msc_fatfs.c这个文件,它提供了对u盘扇区的读写功能,为上层的文件操作如打开文件,读取文件提供物理层的支持。#include "usb_conf.h"#include "diskio.h"#include "usbh_msc_core.h"/*-------------------------------------------原创 2013-08-01 20:36:31 · 4491 阅读 · 0 评论 -
利用STM32的Systick中断实现按键消抖
在系统初始化的时候对systick进行初始化 void SysTickConfig(void){ /* Set SysTick Timer for 100us interrupts */ if (SysTick_Config(SystemCoreClock / 10000)) { /* Capture error */ while (1); } /*原创 2014-03-23 17:19:59 · 6615 阅读 · 2 评论 -
如何解决使用keil下载或者调试程序是提示的“Invalid ROM Table”信息!
如何解决使用keil下载或者调试程序是提示的“Invalid ROM Table”信息!如下是外国一个论坛上提供的方法 Wow, Clive1, what a wonderful hint. I set the BOOT0 jumper (="System Memory", and in the target options / debug pag翻译 2014-03-13 20:19:27 · 12777 阅读 · 0 评论 -
STM32使用不同的晶振需修改的代码
第一步,打开stm32f10x.h,将 #define HSE_VALUE ((uint32_t)8000000) /*! 修改为: #define HSE_VALUE ((uint32_t)12000000) /*! 第二步,打开system_stm32f10x.c,修改PLL参数,将 /* PLL configuration: PLLC原创 2014-03-13 22:23:25 · 2054 阅读 · 0 评论 -
运用keil的ULINK2下的ITM机制打印调试信息
我手头上用的keil 5.0的开发环境,仿真调试器工具用的山寨ulink2。想利用仿真器打印printf的调试信息在开发环境的debug(printf) view窗口上。#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))#define ITM_Port16(n) (*((volatile unsi原创 2014-02-12 11:27:40 · 3357 阅读 · 0 评论 -
STM32双机SPI中断通信机制
研究STM32F4的SPI有一阵子了,进步很缓慢,前几天终于鼓起勇气,用手抄了一遍官方的代码,然后自己一个字字的敲进去,然后再调试。历时大约一个星期,终于把SPI的中断发送和中断接收给整清楚了。在没有正确运行出结果之前,一切都是辣么痛苦。此文鼓励我继续往前进步。先说主机端,首先当然是写SPI驱动文件,也就是SPI的配置,具体文件如下:SPI.c#include #include原创 2013-09-26 11:18:16 · 16483 阅读 · 3 评论 -
cortex-M4的trace功能
在调试的时候需要知道某个变量的值,我记得M3是可以debug进去跟踪变量的,可是M4不行。 我用的是ulink2,打开了下载选项的trace使能。碰到如下问题: 1、logic analysis不知道怎么添加变量,感觉不够友好。2、NVIC可以显示出信息,但是只有中断标号。3、还是查看不了每个的单独的变量。原创 2013-09-25 21:53:45 · 1528 阅读 · 0 评论 -
STM32F4 SPI通信自发自收使用经验
本周调了一周的SPI通信,今日有了一些进展,通过自发自收实现了方案的验证。 SPI的配置函数如下void SPI_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; SPI_InitTypeDef SPI_InitStructur原创 2013-08-28 10:42:22 · 8199 阅读 · 1 评论 -
应用CH378的SPI转USB功能
CH378 支持 USB 设备方式和 USB 主机方式,并且内置了 USB 通讯协议的基本固件,内置了处理Mass-Storage 海量存储设备的专用通讯协议的固件,内置了 SD 卡的通讯接口固件,内置了 FAT16 和FAT32 以及 FAT12 文件系统的管理固件,支持常用的 USB 存储设备(包括 U 盘/USB 硬盘/USB 闪存盘/USB 读卡器)和 SD 卡(包括标准容量 SD 卡和高原创 2013-08-09 16:10:54 · 5014 阅读 · 0 评论 -
FATFS文件系统的中文长文件名配置的几个注意事项
今天终于把FATFS文件系统的中文长文件名弄个端倪出来了。可以在串口输出根目录甚至是二级目录下的文件,虽然还是有些小问题需要进一步调试。第一步,当然是下载,这个很容易,下载到最新的FF0.9a就行。第二步,当然是加入工程,这个不展开,然后就是配置ffconf.h这个文件啦。#ifndef _FFCONF#define _FFCONF 4004 /* Revision ID */原创 2013-08-07 21:46:49 · 10200 阅读 · 1 评论 -
FATFS的长文件名特性相关代码
今天看到LFN的相关代码,其中ff.c里有如下代码:#elif _USE_LFN == 3 /* LFN feature with dynamic working buffer on the heap */#define DEF_NAMEBUF BYTE sfn[12]; WCHAR *lfn#define INIT_BUF(dobj) { lfn = ff_mema原创 2013-08-06 21:56:35 · 3234 阅读 · 1 评论 -
USB库的MSC类里用到的callback回调函数
在STM32F4上开发USB高速接口。在其USBH_USR_MSC_Application()函数下编写用户程序。发现之后函数调用完之后,返回值0。程序跑usbh_msc_core.h里去了。 case USBH_MSC_DEFAULT_APPLI_STATE: /* Process Application callback for MSC */ appliStat原创 2013-08-06 14:54:32 · 3340 阅读 · 0 评论 -
成功移植icore的shell串口到STM32F4
icore开发板上的例子光盘下的 \iCore_扩展相关\code\7_uart1_shell工程文件,删除FSMC.c 和RCC.c 两个C文件和H文件移植步骤:第一、替换到之前的启动代码,添加startup_stm32f4xx.s 和system_stm32f4xx.c 两个文件。system_stm32f4xx.h可以替代到rcc.h 第二、改写NVIC.c 里的初原创 2013-08-04 22:41:04 · 3315 阅读 · 0 评论 -
STM32出现HardFault_Handler故障
FATFS文件系统的LFN选项支持4种配置模式#define _USE_LFN1/ 0: Disable LFN feature. _MAX_LFN and _LFN_UNICODE have no effect./ 1: Enable LFN with static working buffer on the BSS. Always NOT reentra原创 2013-08-02 21:03:42 · 2581 阅读 · 0 评论 -
FATFS文件系统打开一个文件并读出内容
由于官方移植的FATFS是短文件名英文,因此调试时在U盘里创建了一个名为demo.txt的文件 在USBH_USR_MSC_Application函数下添加了一段代码。/*** @brief USBH_USR_MSC_Application* Demo application for mass storage* @param None* @retva原创 2013-08-01 15:57:23 · 5403 阅读 · 1 评论