emWin for 12864 并口移植 源代码下载:RTX_emWin5.24_Keil_VS2008-20141122.zip   硬件环境: CPU: stm32f103ve LCD:st7920控制器 12864 并口   软件环境: Keil MDK4.74 VS2008 emWin5.24   使用rtx操作系统     1.实现emWin5.24在keil 和vs2008同一代码的工程,vs2008目录实现在FMC的官方模拟器上的模拟,Keil目录实现在stm32f103ve…
PS:网上关于ds1307的资料最多还是基于51等单片机的,和stm32上还是略有差别,代码是参考了http://www.openedv.com/posts/list/20167.htm 但是他的代码有一定错误,在我的设备上读不了数据,更别谈写数据了. 说明:此程序是控制IO口模拟i2c控制ds1307 关于ds1302的资料这里就不多说了,主要分析下代码.让各位入门的新手参考一下,附上代码的下载链接:http://download.csdn.net/detail/u012062785/8966…
UCGUI(emWin) 2-D图形库--之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一个空心的,另一个是实心的,用时注意加于区分,另一个值得注意的是绘制模式,GUI_SetDrawMode(),目前emWin5.2有两模式,一个是正常的绘制,另一个是取反的方式绘制.   例程代码下载:3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图.zip   GUI_Get…
74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准. 74HC595是具有8位移位寄存器和一个存储器,三态输出功能. 移位寄存器和存储器是分别的时钟. 数据在SHcp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在STcp(存储器时钟输入)的上升沿输入到存储寄存器中去.如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲. 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7'),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输…
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式:温度测量范围为-55℃-+125℃,可编程为9位-12位A/D转换精度,测温分辨率可达0.0625℃.主机控制DS18B20完成温度转换必须经过三个步骤:初始化.ROM操作指令.存储器操作指令.必须先启动DS18B20开始转换,再读出温度转换值.本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符…
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈…
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把ADC转换分成2个通道组:规则通道组相当于正常运行的程序:注入通道组相当于中断.程序初始化阶段设置好不同的转换组,系统运行中不用变更循环转换的配置,从而达到任务互不干扰和快速切换. 有16个多路通道.可以把转换组织成两组:规则组和注入组.在任意多个通道上以任意顺序进行的一系列转换构成成组转换.例如,可…
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启TIM2时钟,配置PA0输入 APB1外设复位寄存器 (RCC_APB1RSTR) APB2外设时钟使能寄存器(RCC_APB2ENR) 置1开启.清0关闭. Eg:RCC->APB1ENR|=1<<0; //使能TIM2时钟  RCC->APB2ENR|=1<<2;  …
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟,配置PA8为复用输出 APB2外设时钟使能寄存器(RCC_APB2ENR) APB1外设复位寄存器 (RCC_APB1RSTR) 置1开启.清0关闭. Eg:RCC->APB2ENR|=1<<11; //使能TIM1时钟 配置I/O口: 参见stm32寄存器版学习笔记01 GPIO口的配置…
stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干扰大时,上拉/下拉输入模式也建议使用外部上拉/下拉电阻. 1.设置外部中断 的步骤 ①初始化I/O口为输入 参见 stm32寄存器版学习笔记01 GPIO口的配置. ②开启I/O口复用时钟, 设置I/O口与中断线的映射关系 这一步在函数void Ex_NVIC_Config(u8 GPIOx,u8…
wifi芯片为88w8686,已经写好了驱动,用的是SPI方式,接下来准备移植wpa_supplicant.参考的资料为一篇论文----<基于微控制器的WPA技术研究与应用>. wpa_supplicant src目录是wpa认证的源码,wpa_supplicant是wpa_supplicant程序的源码.分析wpa_supplicant里的源码可以了解wpa接口的使用方法. VS2013工具 在wpa_supplicant目录里面提供了两个工程VS2005和Qt Create,我打开的是VS…
0.前言     去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一详细解释个别部分仅仅能点到为止.     [本文要点]     [1]不带操作系统的LwIP移植,LwIP版本号为1.4.1.     [2]MCU为STM32F103VE,网卡为ENC28J60.     [3]移植过程重点描写叙述ethernetif.c和LwIP宏配置等.     [4]一个简单的TCP…
参考博客: http://www.aiuxian.com/article/p-705047.html http://blog.csdn.net/u013232419/article/details/45201437 contiki大神Jelline的博客:http://blog.chinaunix.net/uid-9112803-id-2978041.html 简介: contiki移植练习移植过程: 1.创建文件夹contiki,将contiki-2.7中的core和cpu两个文件夹拷贝到co…
第一层调用的移植和裁剪. wpa_supplicant_init 照论文的指示,删除wpa_params和wpa_global相关的东西.初始化流程也相当简单,driver初始化,eap_register_methods加密方法初始化,eloop_init事件循环初始化. wpa_supplicant_run 这其中注册了两个回调函数,然后eloop_run开始事件循环. wpa_supplicant_deinit eap_peer_unregister_methods注销加密方法,eloop_…
[SinGularLaRiTy-1044] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 小水塘(lagoon) 题目描述 忘川沧月的小水塘的水面是一片由以下两种图形组成的图案: <图lagoon-1> 这两种图形都由一个边长为2的正方形和两个半径为1的1/4圆组成,圆心在正方形的两个对角顶点上. 小水塘左上角坐标为(0,0),右下角坐标为(2*n,2*m).水面上每一个顶点坐标为偶数的2*2正方形,都是上面两个图形中的一种.如果我们…
24 星球的末日[问题描述]24 星球的世界末日就要到了 , 可是诺亚方舟还没有制造完成 . 为了制造诺亚方舟这个星球上的所有国家都站在统一战线 . 现在一共有n个国家 , 一个国家到另一个国家都有一条且仅有一条通信渠道,且这个渠道有一个距离,这样就形成了一个有向完全图. . 世界末日的预兆已经来了 , 世界上很多东西都在遭到不明原因的破坏,包括这些通信渠道.现在为了联合制造出诺亚方舟,需要统计所有国家对 (a到b和b到a是不同的 ) 之间通信最短距离之和 .( ( 例如只有两个星球 ,a到b与…
尼玛pdf依旧不会粘23333 /* 每段合并到总的里面 假设总的有X个 这一段有Y个 一共有X+1个空 那么就有 C(X+1,1)+C(X+1,2)+C(X+1,3)+...+C(X+1,Y) 这样是WA的!!! 比如说 C(X+1,2) 那就是Y个放到两个空里 分别放几个...忘了算了23333 自己就想到这里 Wa了 10分 (暴力40 吐血了) */ #include<iostream> #include<cstdio> #define maxn 1010 #define…
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来那么直接相邻的两个直接走就可以了. 那么我们要走回来呢,很简单,手动为回来留一条路径即可.还是一样的贪心方法,这次我们一般间隔两个.为什么是一般呢,其实也是对于边界的不同讨论了. 比如对于这样的一种情况,我们可以这样走: 其中红色表示走过去的边,绿色表示走回来的边. CODE #include<cs…
传送门 分治妙题. 没有这道题的暴力分今天又垫底了啊233 由于用了分治的方法,我们只用考虑左区间对右区间的贡献以及右区间对左区间的贡献. 可以发现如果从中点开始向两边递推最小值并用这个区间最小值来推式子是可以推出右/左区间的所有点对左/右区间的某个点的贡献是满足一个偏序关系的. 于是用一种可以支持删除查询的数据结构偷懒用了bit来维护就行了. 代码…
传送门 考虑到a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])是可以分成最多logloglog段且段内的数都是相同的. 那么我们用链表维护这logloglog…
传送门 考试自己yyyyyy的乱搞的没过大样例二分+dp二分+dp二分+dp过了606060把我自己都吓到了! 这么说来乱搞跟被卡常的正解比只少101010分? 那我考场不打其他暴力想正解血亏啊. 正解同样是二分+dp. f[i]f[i]f[i]表示i不变且前面全部满足当前要求时最少需要改几个数. 然后用f[i+1]f[i+1]f[i+1]~f[n]f[n]f[n]转移一下就行了. 代码…
————————————————————————————————————————题解 唯一没有想出来的题 我们发现以上两种操作 a0,a3,a6,a9……的相对位置不变 a1,a4,a7,a10……的相对位置不变 a2,a5,a8,a12……的相对位置不变 所以只要记下a0,a1,a2最后的位置,就可以推出剩下的数的位置 #include <iostream> #include <queue> #include <set> #include <cstdio>…
得分: \(100+0+100=200\)(\(T2\)悲惨爆\(0\)) \(P.S.\)由于原题是图片,所以我没有上传题目描述,只有数据. \(T1\):query(点此看题面) 熟悉主席树的人都知道,这是一道主席树查询区间排名的模板题. 但是,由于太久没打主席树,我对它有一些生疏了,结果依然用了一个多小时... ... 主席树查询区间排名的大致思路,就是将元素给离散化,然后用\(n\)棵线段树(合并成一棵主席树)分别存储\(1\sim i\)中每个元素出现次数,然后就可以很方便地利用前缀和…
原题与此题 原题是一道神仙不可做题,两者区别在于,原题不能有重边和自环. 然而,这题可以有重边... 于是这题就变成了一道大水题. 此题的解法 考虑如何构造. 对于\(n\le10^4\)的情况: 对于\(n>10^4\)的情况: 边上的权值表示边数. 代码 #pragma GCC optimize(2) #include<bits/stdc++.h> #define Tp template<typename Ty> #define Ts template<typena…
T1 tom 题意: 考虑一定是属于\(a\)的在一坨,属于\(b\)的在一坨,找到这条连接\(a\)和\(b\)的边,然后分别直接按\(dfs\)序染色即可 注意属于\(a\)的连通块或属于\(b\)的连通块可能在\(dfs\)树上不都体现为一棵完整的子树,所以需要都判断一下 #include<bits/stdc++.h> #define N (200000 + 10) using namespace std; inline int read() { int cnt = 0, f = 1;…
T1:还在头铁,顺便复习了一下lct[虽然这题用不上因为复杂度不对] 头铁结束. 虽然题目存在换根的操作,实际上并不用真的换根. 2操作中求lca的时候只要考虑原树上root和x.y的lca以及x,y的lca,三个中取最深的就是现树上x和y的lca. 关于u的子树整体操作需要分类讨论.如果现根不在原树上u的子树里,那么在新树上的目标子树与原树相同,直接操作.如果u就是root,那么直接整棵树都操作.最后如果root在原树上u子树里,那么需要反一下,应当进行操作的部分是整棵树上除了u包含root的…
这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是什么? 关于SysTick在STM32的资料中并没有详细的介绍,这可能由于SysTick是ARM内核的东西.在<STM32F10xxx参考手册>.<STM32F4xx参考手册>以及<STM32F7xx参考手册>中,介绍时钟的时候仅仅是在使用树上简单的画出了HCLK时钟经过8…
经过细测,Cortex-M3的double类型必须4字节对齐访问,其他诸如float,int,short 可以非对齐访问.否则将会产生硬件异常!即访问double类型地址必须能被4整除,测试代码如下: 1: /* 测试Cortex-M3类型对齐访问 2: * i,j,k,l控制对齐长度,对齐 3: * 长度不符合是将产生HardFault 4: * 异常 5: */ 6: double *p; 7: float *q; 8: int *t; 9: short *r; 10: char buf[3…
前面我们讲过,因为在STM32上没有系统时间的接口,因此无法调用sleep函数,在本文中,笔者将利用滴答计时器实现精准延时. 查阅技术手册,滴答计时器依赖于一个SysTick_Type类型寄存器,定义如下 typedef struct { vu32 CTRL; vu32 LOAD; vu32 VAL; vuc32 CALIB; } SysTick_TypeDef; 四个成员分别意义是控制和状态,重装载值,当前值,校准值. 滴答计时器的原理很简单,就是利用系统时钟信号,每接到一个时钟信号计数器加一…
1. 添加I2C 设备 TP 一般采用的是I2C 作为数据和命令接口,所以TP 驱动也可以归类为I2C 驱动.TP驱动的主要逻辑不在这里,但是了解了Linux 的I2C 体系架构,就可以对整个驱动流程有了 更加清晰的认识,但这里不详细展开讨论I2C 的体系架构,只围绕怎么移植开发TP 驱动展开讨论. 在板级文件中,也就是瑞星微的代码文件board-rk30-sdk.c 中,实例化一个i2c_board_info结构体,该结构抽象描述一个具体的i2c 设备,然后将该实例添加到__i2c_board…