- 博客(35)
- 收藏
- 关注
原创 STM32低功耗模式--STOP模式
平台:stm32f103rct6固件库:STM32F10x_StdPeriph_Lib_V3.5.0一、STOP模式的唤醒官方文件中特别提到要配置EXTI寄存器,要配置EXTI寄存器,要配置EXTI寄存器,比如USART,配好USART中断还得配相应RX引脚的EXTI中断,否则无法唤醒STOP模式!二、进入STOP的必要条件① RCC_APB1Pe
2015-11-12 17:17:53
12631
原创 STM32标准库的移植
---------------------------------------------------------------------------------------------------------STM32 Standard library 的移植STM32有两种库,一个是老版的standard library,另一个是cube 网络资源90%都是std lib版
2015-11-12 16:38:34
2514
1
转载 getopt函数--获取命令行参数
相关函数表头文件 #include定义函数 函数原型:int getopt(int argc,char * const argv[ ],const char * optstring);获取的参数:extern char *optarg;extern int optind, opterr, optopt; getopt()用来分析命令行参数。
2015-09-23 14:01:26
946
原创 BIN转HEX详解
一、准备1.bin文件和hex文件 bin文件即二进制文件,区别于.mp3 .avi .pdf等格式的文件,以.bin后缀结尾,内容是二进制信息(非文本文件,即内容不是ascii码)hex文件即intel hex格式的文本文件,以十六进制表示,具有地址信息,可烧录进mcu。
2015-09-23 11:57:04
4025
转载 YModem协议
YModem协议: YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议。下面有一些相关的文档。这里要感谢关注我微博的一些朋友提供的资料。省去了不少时间。 下面先看下YModem协议传输的完整的握手过程:先看下图SENDER:发送方。RECEIVER:接收方。第一步先由接收方,发送一个字符
2015-09-15 14:31:24
1648
原创 Unicode、UTF8、GB2312、ANSI关系
一、前言汉字编码是让人比较头疼的一块,最近下定决定把他搞懂。网上翻了个遍,讲得详细透彻的让人头疼看不下去,讲得通俗的不够详细,只言片语。更有甚者开篇即讲Unicode是啥,多少个字符,GB2312巴拉巴拉,多少个汉字,全然不讲应用场景,不理知识接受的先后,遂结合翻看过的几篇写一写心得。二、字符编码的发展ASCII --> 拓展字符集 --> GB2312(中国大陆) --> G
2015-09-14 17:59:17
1048
原创 thread api整理
rt_thread_t rt_thread_find(char *name) ; 查找线程名字,成功返回线程句柄,失败返回NULLrt_err_t rt_thread_delay(rt_tick_t tick); 阻塞tick长时间,进入suspend队列,被定时器唤醒rt_err_t rt_thread_sleep(rt_tick_t tick); 同上(sleep被
2015-03-14 18:41:41
766
原创 rt thread
idle线程只负责处理死亡(删除、退出、detech)进程其他线程在分配完时间片后,按优先级运行,高优先级运行时一直占用线程资源,直到yeild让出、delay阻塞(抢锁或者主动阻塞)才进入挂起队列,轮到次优先级运行。次优先级运行时同样占用资源不被低优先级抢占,直到高优先级不在阻塞才被占用线程,此时次优先级同样进入挂起队列。相同优先级时间片用完即释放CPU给另一线程
2015-03-13 21:27:26
907
原创 stemwin的汉字显示
stemwin功能很强大,封装了对lcd的常见操作,屏蔽了lcd层的接口函数。但却还没有集成中文字库,这不能不说是一个遗憾。网上关于stemwin的中文字库教程能讲详细的只有一篇安富莱的《第18章:汉字显示方式一(FontCvt的使用)》,笔者按教程操作后发现始终不能显示。折腾2天打算放弃之际,终于柳暗花明成功在lcd上显示中文。这里特别感谢《emWin - 汉字字库生成及显示》一文,完美解决了我
2015-03-07 11:50:34
7070
1
原创 二维码的C语言实现
二维码在今天已经相当普及了,制作二维码也不难,网上有很多制作二维码的网站,输入信息,立即转换出二维码。然而我们要自己根据信息制作出二维码却不那么简单。网上粗略找了下源码,几乎清一色的是java/c#版本的,这对于stm32芯片项目来说没什么大帮助。最终辗转找到Linux上的qrencode软件包,将其移植了过来。一、初识二维码a) 二维码可以存储1850个字节的信
2015-03-07 11:12:20
31414
7
原创 stemwin 之 字母显示
层次:LCD驱动完备,操作STEMWIN函数显示内容,LCD驱动层是透明的字库:字母库集成在STemWin526_cm4_iar.a的库中, 没有源代码文件:user中建立一个专门GUI操作函数,供main.c调用========通用操作=================================#include "GUI.h"========GUI主函数
2015-03-03 11:56:37
1140
原创 STM32的LCD
STM32中并没有集成LCD的接口,所以HAL库里并没有LCD的驱动,需要专门的LCD控制器以及自制驱动:并没有LCD驱动LCD小知识:LCD没有自带背光源,需要LED作为背光源才能达到显示功能lcd 相关文件:stm32f429i_discovery.c 定义LCD控制芯片ili9341的接口,用于配置LCDstm323f429i_dis
2015-03-01 15:01:48
1409
原创 TICK
TICK是系统定时器,设置TIMERmain.c : HAL_InitTick ------ 设置TIMER6it.c : TIM6_DAC_IRQHandler ----- uwTick++tim.c : Delay -------- while((HAL_GetTick() - tickstart) 退出
2015-03-01 13:58:21
569
转载 IICvs SPI
IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。
2015-02-26 16:49:15
569
转载 指向指针的指针
1. 设计一个函数:void find1(char array[], char search, char * pi) 要求:这个函数参数中的数组array是以0值为结束的字符串,要求在字符串array中查找字符是参数search里的字符。如果找到,函数通过第三个参数(pa)返回值为array字符串中第一个找到的字符的地址。如果没找到,则为pa为0。 设计:依题意,实现代码如下。 voi
2014-08-13 17:21:56
496
转载 Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc
2014-08-11 23:59:41
463
转载 LINUX进程间通信---使用信号(转自倦飞L)
一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产
2014-08-11 11:56:51
681
转载 errno、stderr、perror函数和strerror函数
strerror()方法与perror()的用法十分相似。 先谈谈perror()的用法,这个方法用于将上一条语句(方法)执行后的错误打印到标准输出上。一般情况下(没有使用重定向的话),就是输出到控制台上。但是,如果我需要了解另外一个进程的某一个方法执行的错误,或者更briefly,我就希望将错误打印到一个文件里面,perror()就不太合适了!为了实现我刚刚说到的要
2014-08-06 11:57:53
1876
转载 fseek
int fseek( FILE *stream, long offset, int origin );第一个参数stream为文件指针第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SETSEEK_SET: 文件开头SEEK_CUR:
2014-08-06 11:34:02
539
原创 mkdir
1、mkdir 能创建文件2、实例#includeint main(int argc,char *argv[]){ if(mkdir(argv[1],10777)!=-1) { printf("cannot create\n"); }}3、运行结果
2014-08-06 11:27:10
631
原创 getcwd的用法举例
1、 getcwd 是获取当前工作目录的函数2、实例#include #define LENGTH 100int main(void){ FILE *fd; char str[LENGTH]; getcwd(str,sizeof(str)); printf("current working directory:%s\n",str);}3、运行结果
2014-08-06 10:53:57
1326
原创 fread和fwrite的使用举例
#include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
2014-08-06 00:28:53
736
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人