随笔分类 -  stm32学习札记

stm32学习过程中的领悟、笔记等等。
摘要:缘 起 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据的交换问题,经过讨论和研究,选择了json格式的数据进行交互。当然,如果自己去写一个json解析器,有点重造轮子的嫌疑。于是 阅读全文
posted @ 2014-09-06 23:27 鱼竿的传说 阅读(82812) 评论(5) 推荐(8)
摘要:前题: 前面,通过分析中断的那几个库函数实现过程,加上对各种资料的阅读,于是自己也用寄存器实现了按键输入中断,呵呵~~~ 首先,外部事件/中断过程如下: A) 配置输入线: I/O口的模式,特性等等; B) 配置外部事件,并使能外部事件; C) 给该外部事件所带来的中断分组,分级<优先级>; D) 中断服务程序:当中断触发后,将跳到该程序中。按部就班,先说说我的硬件连接: 按键1 PD^11; 按键2 PD^12; LED1 PD^2; LED2 PD^3;软件实现: 按键1 按下:led 1、led2 循环亮、灭;按键2按下,led2 独亮。直接上代码:1:头文件exi... 阅读全文
posted @ 2013-03-19 22:36 鱼竿的传说 阅读(1377) 评论(0) 推荐(0)
摘要:前题: 闭门造车,两周了,经过各种的思考和求问,反复阅读了<<M3权威指南>>和<<stm32不完全手册>>的相关章节,以及开发板厂商的实验例程,对stm32这块中断终有所悟,是以记之。 至于中断的什么优先级,什么优先级分组,使能之类的原理,就不再赘述。这里主要是记载以下如何使用中断,以及中断配置函数的实现过程,其中并叙述我曾经的疑惑和感悟。 我的开发板里的中断例程是用按键控制一个灯亮和灭的两个状态。 这个例程的实现过程如下描述:第一步,将一个I/O口配置成中断输入模式。 这里需要注意的是,GPIO本身是没有中断功能神马的。如果硬要使他产生中断输 阅读全文
posted @ 2013-03-14 23:42 鱼竿的传说 阅读(5165) 评论(4) 推荐(6)
摘要:前题: 感觉一个警报灯<流水灯>,用库函数居然要很大的篇幅,虽然库函数很简单和方便,但是总是容易囫囵吞枣。而且嵌入式单片机编程中的位操作非常多,于是在这里用寄存器来好好锻炼下C语言的位操作。一、电路:依然控制LED1闪灭就OK了,LED1接stm32芯片的PORTD.2口,高电平输出。二、代码1,main.h、main.c#ifndef _MAIN_H_#define _MAIN_H_#include <stm32f10x.h>#include "led.h"#endif /*_MAIN_H_*/#include "main.h" 阅读全文
posted @ 2013-02-28 00:27 鱼竿的传说 阅读(678) 评论(0) 推荐(0)
摘要:前记: 以前自己在编写延时函数的时候,经常是for()结构或者while()结构以及do while{}结构。但这3种方法是非常的粗糙,在我现在的工作中是不能满足其精度的。由于stm32中有个滴答时钟,于是以后stm32相关的延时程序,打算拿它作挡箭牌了。 首先是,stm32 的数据手册上并没有滴答时钟的东西,只说了其会产生中断,具体如何,没说。谷歌了几遍,又查询了些许资料,发现来源于<<xxx权威指南>>和<<xxx技术手册>>。 然后在网上发现使用其作为延迟功能有两个方法,一个是使用中断方式,一个是使用查询方式<非中断>。由于尚未 阅读全文
posted @ 2013-02-20 00:18 鱼竿的传说 阅读(3481) 评论(0) 推荐(1)
摘要:开发板LED截图如下:开发板厂商的例程是1~4个LED形成流水灯,我自己闪灭LED1即可,以期熟悉stm32 的GPIO的几个固件库函数。为了养成稍微好一点的习惯,于是开始练习一个功能一个函数,下面是led初始化代码,先是<led.h>1 #ifndef _LED_H2 #define _LED_H3 4 void led_init(void);5 #endif然后是<led.c> 1 #include <stm32f10x.h> 2 #include "led.h" 3 4 GPIO_InitTypeDef GPIO_InitStruc 阅读全文
posted @ 2013-02-18 23:25 鱼竿的传说 阅读(831) 评论(0) 推荐(0)

$.getScript('http://s1.bdstatic.com/r/www/cache/baidu_search/baiduSearch-1.4.js', function () { baidusearch.init("shiny_chinese"); });