STM32F1
郄志怀
好读书不求甚解
展开
-
基于STM32 HAL库的flash emulation eeprom
本文讨论如何使用flash模拟eeprom(基于STM32 HAL库),本例使用的MCU是STM32F103TB。IDE平台:IAR EWARM7.60用到的资源:STM32Cube_FW_F1_V1.4.0库,emulation_ee.c/h,app_eeprom.c/h,main.c;emulation_ee模块封装了flash模拟eeprom的所有细节,提供了3个用户API,该模原创 2016-08-03 10:00:10 · 13173 阅读 · 2 评论 -
mbed serial_api模块移植到stm32f107vc(基于st32f1 cube1.4.0)
mbed平台是基于面向对象的c++语言实现的,serial_api是serial类的底层实现(c语言文件)。有些同学可能想在C工程中直接使用serial_api模块(本人就是其中之一,也这么做了,的确比直接调用hal抽象库要好用一些),可惜的是直接将其用在工程中很明显是不行的,至少中断的实现策略就过不去。但是又想用,那么这么办呢?很好办,自己动手修改serial_api及其相关的底层关联c文件(官原创 2016-08-20 10:22:34 · 1802 阅读 · 0 评论 -
STM32F107RC下载程序时的1个错误
今天上午新到了1批电路板,需要下载程序,由于好久没出货了,打开源代码工程进行下载时,居然出现了问题。程序在下载完成后直接跳到了HardFault_Handler()硬件中断错误中,程序下载到别的电路中没有问题!为什么呢,肯定是不经意修改了编译选项?找吧,经过一番苦寻,终于找到了结果,原来是闲的蛋疼没事修改了linker选项中config标签下默认的linker config file:.icf文件原创 2016-08-26 10:22:16 · 628 阅读 · 0 评论 -
基于CYCCNT时钟周期计数器的高精度延时接口
在MCU资源不足时,我们经常会用普通IO模拟串行时序,例如:i2c,uart等。此时,就会需要一个比较精确一点的延时来提供通讯成功率。STM32MCU调试单元提供了一个时钟周期计数器,利用该计数器我们可以实现一个高精度的延时计时器。概念:频率fclk(cpu时钟)与时间的关系,t=1/fclk,例如:系统时钟为72MHZ,那么一个时钟周期的执行时间为:1/72(us),也就是72个时钟周期的执原创 2016-10-09 14:12:12 · 2954 阅读 · 0 评论 -
stm32模拟串口(基于高精度延时)
上一篇实现了高精度延时,这一节我们利用已实现的高精度延时接口来模拟串口发生数据(接收数据暂时没用到,所以偷懒没实现),直接上代码。一、softserial.h#ifndef _SOFTWARE_SERIAL_H#define _SOFTWARE_SERIAL_H#include "stm32f1xx.h"void soft_serial_init(v原创 2016-10-09 14:52:29 · 5820 阅读 · 1 评论 -
软件定时器实现源码
原理:软件定时器的原理其实很简单,就是在启动定时器的时候获取当前系统的时间戳start_ts,然后用start_ts加上要定时的时间dly_ts(timeout= start_ts + dly_ts),在心跳定时器中断中查询当前时间计数值(时间戳),如果查询到的计数值大于timeout,说明定时时间到,并调用回调函数执行操作。资源:1个硬件定时器,用作心跳时钟下面我们来实现一个简单的基于裸原创 2016-10-09 15:33:18 · 7010 阅读 · 1 评论 -
MBED移植日记:gpio_api移植(基于STM32F107RC)
本文是继MBED串口API移植的又一篇系列文章,前阵子忙着赶项目,移植完了却没来得及写成文章来分享,今天来补上,一来可以温故知新,二来也可以献出自己的一点微薄之力。写的不好,移植的也不一定好,请大家多多指教。本文的gpio_api模块与mbed官方的会有一些不同,原因是加入了我个人理解的一些东西。一、关联文件1、ierror.h/* **********************原创 2016-09-27 12:04:28 · 2108 阅读 · 0 评论 -
mbed移植日记:spi_api(基于STM32F107RC,适用于C)
spi是比较流行的一种串行外设,很多外设和集成IC都会使用到,如显示,AD、DA、FALASH等等都会用到。虽然使用stm的cube库也用着不错,但每次使用时都得重新粘贴复制一遍很是麻烦,故才会有此篇文章。模块的设计格局与官方mbed有些地方是不一致的,读的时候请注意一下。因为是在项目过程中创建,模块接口不够全面,大家可以自行添加需要的API。注意:中断设计方法请参考mbed seri原创 2016-09-28 16:48:17 · 3217 阅读 · 0 评论