11 林子xxx

尚未进行身份认证

工作多年,现在才想起写博客。

等级
TA的排名 4w+

Cortex-M0模仿位带操作使用

Cortex-M3/M4有位带区(BIT-BAND),可以进行位带操作,而Cortex-M0是没有此功能区域的。必须说明一点,BIT-BAND的本质可以说是空间换时间。是为追求速度而设置的功能。像STM32F0XX这些Cortex-M0系列的MCU,如果追求速度,还是老老实实操作BSRR/BRR这类专门的寄存器。如果不介意速度损失,单纯想做出类似"位带"操作(比如:PAout(0)=0,...

2019-04-22 21:19:00

STM32:SPI驱动ADXL345

ADXL345为3轴数字加速度计。支持SPI或I2C访问。网上例子大多是I2C,这里使用4线SPI。一、遇过的坑调试过程花了几个小时,遇到一些小坑。1.开始的时候,无论如何都无法读取芯片ID。这可是最基础的一步啊,SPI,I2C都试过。无奈之下,对照原理图与手册的管脚说明,发现Vs接到地了。其实这个管脚要接电源电压。老实说,一看名字还以为要接地,毕竟一般IC接地脚名字为Vss。让硬件工...

2019-03-19 23:35:14

STM32:FSMC驱动TFTLCD(2)

上一篇文章写了ST7789的基本驱动代码,但是没有实现具体的绘图代码。这里加上。1.代码头文件#ifndef__BSP_LCD_H#define__BSP_LCD_H#include"lcd_drv.h"/*RGB565:高位至低位排列,RRRRRGGGGGGBBBBB*/#defineRGB(R,G,B)(((R>...

2019-03-14 20:17:48

STM32:FSMC驱动TFTLCD(ST7789)

最近项目使用STM32F407驱动tft彩屏,屏幕的内部驱动芯片为ST7789V,这个IC网上资料不多。废话不说,直接上完整驱动代码。1.代码/****************************************************************************************************模块名称:TFT液晶显示...

2019-03-13 22:24:24

STM32:I2S驱动WM8978

最近项目中使用STM32F4驱动音频IC:WM8978。WM8978为DAC+ADC芯片,本身并不具备编解码的功能,一方面,可通过I2S接口接收PCM数据,转为模拟信号输出,此为DAC过程,即放音;一方面,可接收模拟信号转为数字信号,通过I2S接口传输给MCU,此为ADC过程,即录音。WM8978还使用I2C接口配置其工作参数,比如音量,EQ,3D环绕等。WM8978本身可直连1W/8欧的小喇...

2019-03-12 22:38:49

nodemcu:使用lua开发esp8266

一、LuaLua是一种轻量级的嵌入式脚本语言。由于它消耗资源小,本身是使用标准c语言开发的,所以也比较合适移植进各种单片机中,用来替代ini,xml这类配置文件,甚至json,并且更加灵活,功能更强。官网:http://www.lua.org二、nodemcu官方解释:nodemcu是超简单的物联网开发平台。直白地说,就是esp8266刷入了lua解析器,可通过Lua脚本控制esp...

2019-03-02 22:04:09

LUA移植至STM32全记录

  之前使用nodemcu时萌发了一直Lua至STM32的想法。后来项目需要,便花了2天移植。  Lua移植大约需要67K的rom,所以STM32F103C8无法使用,至少得103CB才行。1.官网下载源文件http://www.lua.org/download.html我下载的是当前最新版本--5.3.5。2.解压,源代码位于src文件夹,去掉lua.c和luac.c...

2019-02-26 20:39:40

ESP32模组比较

1.简述ESP32系列无线IC是乐鑫espressif出品的性价比高的蓝牙WIFI双模IC。官网:https://www.espressif.com最详细的手册文档为:esp32_technical_reference_manual_cn.pdf2.模组比较将官方和一些其他方的模组列表比较,包括资源,价格。也把芯片放进去。ESP32单核芯片用的少没有列出。可以看出,安信...

2019-02-21 22:05:27

嵌入式软件架构的设计

嵌入式软件架构的设计大多数嵌入式程序员学习编程,都是从开发板的附带例程开始。之后工作也会继续参考那些例程,很多编程习惯、方式也会受之影响。其实开发板式的编程方式与工作中实际需求的并不完全一致。开发板的通常卖给初学者,注重“即插即用”,兼容各种模块,讲究功能的全面而不讲究性能、效率、成本、功耗等。很多时候为了兼容各种型号IC或者显示屏之类,程序累赘,逻辑混乱。开发板的程序往往是一个人完成...

2019-02-18 22:00:35

新年前的唠叨

明天就是除夕了,不知不觉又要大一岁了。2019年了,中国也变得越来越强大,国人也越来越明智自信。记得小时候,媒体的有一种现在看起来很无语的思想横行:凡是中国大陆与别的地方不同的,都是别人对,国人错。当是时也,各种知音体,读者体,意林体,充斥坊间,年幼无知的我和小伙伴们深受其荼毒。“外国”等于“高大上”的思想深入骨髓。港澳台也沾了光变成发达的代名词。什么夏令营的较量,马桶洗到能喝...

2019-02-03 13:42:06

littevGL:软键盘和表盘

littevGL自带软键盘控件和表盘控件。表盘有两种,Gauge和LineMeter。1.软键盘软键盘有两种形式,一种是常规的字母键盘,一种是数字和标点符号键盘。lv_obj_t*kb=NULL;lv_obj_t*ta=NULL;voiddemoKeyboard(void){lv_obj_t*btn1=lv_btn_create(lv_scr_ac...

2019-01-29 23:20:52

littlevGL:字体与汉字

使用各种嵌入式GUI时,总会遇到“汉字显示”“字体”这些关卡。阅读本文前,最好已经了解Uincode,UTF-8,UTF-16,GBK,GB2312相关知识,不懂最好网络搜索相关知识。1.内置字体littlevGL内置了好几种字体。在lv_conf.h中开关相关字体/*==================*FONTUSAGE*==================...

2019-01-26 22:48:51

littlevGL:移植到STM32

1.简介LittlevGL是一个使用C编写的开源免费的GUI,应用在嵌入式设备。源码:https://github.com/littlevgl/lvgl2.移植准备首先需要一个可以正常使用的工程,有LCD驱动,触摸驱动。假设此工程的文件夹名为lvgldemo。本文使用的IDE为KEILMDK。下载:https://github.com/littlevgl/lvgl 和 ...

2019-01-25 22:29:50

总结程序BUG原因

写程序多年,创造了很多BUG,总结一下这些BUG的原因。一、清零这个原因很常见,特别是底层驱动代码,不可避免需要一些全局变量,对于这些全局变量的清零要注意。一般可分为:1.应该清零的地方没有清零。  或者是忘记清零,或者是误以为不需要清零。2.不该清零的地方却清零了。  这会导致变量结果得不到累积。函数越长,或是越想节省临时变量一个变量多次无关使用,逻辑混乱,越是容...

2019-01-23 22:17:22

ESP8266获取网络天气

使用ESP8266模块来获取网络数据(天气,时间等),还是挺简单的。一步一步来。1.初始化串口与相关IO使得MCU可正常使用串口的发送与接收,以及一些IO控制ESP8266的使能端与电源。2检测模块通电后等待几秒钟,串口发送"AT\r\n",检测有回应"OK"则代表模块在线使用。3.连接路由热点发送"AT+CWJAP?\r\n"可以获取当前连接的路由,如果没有连接正确的...

2019-01-09 19:40:28

试用迪文串口屏

最近用了个迪文的串口屏,7寸电阻触摸,T5UIC2平台。这个屏很便宜,95元。假如自己买裸屏开发,屏本身也要60元,电阻触摸15元,加上带RGB接口的ARM9至少也要15,还有其他部件如电源稳压,FLASH等等,价格也没差多少甚至更贵。测试过程只要参考《T5UIC2开发指南》与《HMI指令集》两个PDF文档。1.测试屏幕是否正常拿到屏幕,首先接通电源,使用PC串口助手发送一些命令...

2019-01-07 20:25:21

cJSON移植到STM32

项目中用到JSON接收网络数据,具体是STM32串口接收JSON数据,提取需要的内容。本来KEILMDK是自带JSON的,但是我不习惯使用KEIL自带的那些第三方的东西,很杂乱的感觉。cJSON的移植比较简单,一下子就可以搞定。1.下载源文件。http://sourceforge.net/projects/cjson/只需要两个文件cJSON.c,cJSON.h;下载的包里面...

2018-12-20 23:51:29

STM32+EMWIN电子日历

之前花了几百元买的电子时钟坏了,就用闲置的板子做了一个。功能是显示/调整日期,时间,多个闹钟,倒计时。倒计时使用实体脉冲旋钮控制。基本软件架构是STM32F407+UCOSIII+STEMWIN+RTC。效果如下:这个是定时器,依靠旋钮调节定时时间 1.RTC参照原子历程初始化,并且定义一个新的日期时间结构这是为了一次性把相关消息发送到UI,注意要使...

2018-11-05 18:53:51

拼图游戏

1.首先布置好界面。标题栏,菜单栏,状态栏,以及放置图片框的panel。2.定义图片框类///<summary>///图片框类,包含虚拟XY位置///</summary>publicclassPictureBoxEx:PictureBox{privatePoint_xy;...

2018-08-07 22:08:45

说说STM32的堆栈与内存

1.概念这里所说的堆栈,是针对单片机所说的“堆”与“栈”,指的是内存中一片特殊用途的区域。而不是数据结构中的堆栈(虽然其实规则一样)。这里所说的内存,是指RAM,RAM包括SRAM,DRAM等。而不是什么手机内存卡之类。这里所说的flash,指的是用作为ROM的存储器,保存代码与常量数据。而不是动画制作。。。栈的生长方向:指的是入栈方向,从高地址向低地址生长叫做向下生长,或逆向生长...

2018-08-01 21:20:20

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。