头像-25473

shaoziyang

  • 湖北省武汉市
  • 单片机、嵌入式、RF/无线、电源技术、传感器/MEMS
  • 其它

个人成就

获得 81 次赞

帮助过139人

哪位网友熟悉磁吸接口,有没有资料?

求推荐磁吸接口的资料和型号

怎样用rPi2做一个NAS

怎样用rPi2做一个NAS,需要能够支持外网访问。

在STM32F746G-Disco开发板上玩MicroPython

在STM32F746G-Disco开发板上玩MicroPython MicroPython是个不错的方式,用python开发单片机程序,可以不用安装复杂的开发工具,用文本编辑器或者串口终端,就可以编程和控制。而STM32F746Disco开发 板是一个不错的开发板,M7内核、大屏幕、大容量Flash和RAM,扩展性强。如果将STM32F746Disco和MicroPython结合起来一定非常不错。下面简单介绍在 STM32F746Disco开发板上使用MicroPython的方法。 首先要下载并安装GNU Tools for ARM Embedded Processors。 https://launchpad.net/gcc-arm-embedded 下载MicroPython的源码,micropython-master.zip。 展开MicroPython源码,打开 stmhal 目录 在命令行中输入    make BOARD=STM32F746Disco  如果编译出错,说明编译器没有加入系统路径,可以手工修过makefile文件。修改 CROSS_COMPILE = arm-none-eabi- 这一行,在 arm-none-eabi- 前添加编译器的实际路径,注意路径需要使用右斜杠 将编译后产生的hex文件用STM32 ST-LINK Utility下载到开发板。 使用macroUSB线连接到STM746Disco开发板的USB_FS上。如果不连接STlink,那么需要改变反面的电源跳线。 第一次在windows上使用时,会自动安装驱动,包括PYBFlash移动磁盘和虚拟串口,虚拟串口驱动可以在自动安装的PYBFlash磁盘上找到。 打开一个串口终端,推荐使用kitty或者xshell个人版,设置波特率为115200。 如果可以看到python的提示,就可以开始玩micropython了。 >>> MicroPython v1.6 on 2016-04-03; F7DISC with STM32F746 Type "help()" for more information. >>>     先试试简单的计算: >>> 1+2 3 >>> print(3*4) 12 >>> x=12 >>> x*3 36 >>>     控制LED,输入下面代码后,LED将闪10次。(只需要输入代码部分,>>>和...是系统自动产生的) >>> for i in range(10): ...     pyb.LED(1).toggle() ...     pyb.delay(100)   用按键控制LED >>> sw=pyb.Switch() >>> while 1: ...     if sw(): ...         pyb.LED(1).on() ...     else: ...         pyb.LED(1).off()   还可以控制定时器、I2C、串口等等,更多内容等以后在和大家进行讨论了。 如果觉得编译比较麻烦,可以直接将我编译好的文件下载下去。

MBed即将支持STM32F429-Disco开发板

虽然官网的开发板平台还没有放出来,但是已经可以通过下面网址看到F429-Disco开发板了。 https://developer.mbed.org/platforms/ST-Discovery-F429ZI/

我的STM32F746-Disco试用贴集合

STM32F746-Disco试用 为了方便大家查找,将我的试用贴收集到一起,后面将继续补充完善。 STM32F746-Disco开发板资源 STM32F746-Disco试用1-测试TouchGFX例程 STM32F746-Disco试用2-闪灯实验 STM32F746-Disco试用3-将Mbed程序导出到Keil  STM32F746-Disco试用4-在Keil中编译仿真Mbed程序  STM32F746-Disco试用5-画图 STM32F746-Disco试用6-触摸屏 STM32F746-Disco试用7-画图2 感谢ICKEY提供开发板试用活动。 云汉电子社区首开评测,邀您来参与

STM32F746-Disco试用6-触摸屏

STM32F746-Disco开发板的液晶屏是一个电容触摸屏,灵敏度很高,它支持多点触摸。 这个触摸屏的使用也很方便,在Mbed中,已经为我们定义好了触摸屏类TS_DISCO_F746NG。使用方法是: 先包含头文件, #include "TS_DISCO_F746NG.h" 然后定义触摸屏 TS_DISCO_F746NG ts; 定义触摸屏状态变量 TS_StateTypeDef TS_State; 初始化触摸屏 ts.Init 获取触摸屏状态 ts.GetState(&TS_State); 判断触摸屏是否按下 TS_State.touchDetected 这个变量同时也代表按下点的数量 触摸位置座标 x = TS_State.touchX[idx]; y = TS_State.touchY[idx]; 下面代码演示了检测触摸的效果: #include "mbed.h" #include "TS_DISCO_F746NG.h" #include "LCD_DISCO_F746NG.h" LCD_DISCO_F746NG lcd; TS_DISCO_F746NG ts; int main() { TS_StateTypeDef TS_State; uint16_t x, y; uint8_t text[30]; uint8_t status; uint8_t idx; uint8_t cleared = 0; uint8_t prev_nb_touches = 0; lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); wait(1); status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); if (status != TS_OK) { lcd.Clear(LCD_COLOR_RED); lcd.SetBackColor(LCD_COLOR_RED); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); } else { lcd.Clear(LCD_COLOR_GREEN); lcd.SetBackColor(LCD_COLOR_GREEN); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); } wait(1); lcd.SetFont(&Font12); lcd.SetBackColor(LCD_COLOR_BLUE); lcd.SetTextColor(LCD_COLOR_WHITE); while(1) { ts.GetState(&TS_State); if (TS_State.touchDetected) { // Clear lines corresponding to old touches coordinates if (TS_State.touchDetected < prev_nb_touches) { for (idx = (TS_State.touchDetected + 1); idx

STM32F746-Disco试用5-画图

STM32F746-Disco带有一个480x272分辨率的屏幕,可以非常方便的在这个液晶屏上画图。 在Mbed中,已经为这个液晶屏做好了一个对象,我们只要调用它,就可以非常方便的画出各种图形。 首先,需要包含头文件LCD_DISCO_F746NG.h #include "LCD_DISCO_F746NG.h" 然后,定义一个lcd变量。 LCD_DISCO_F746NG lcd; 现在你就可以开始画图了,如: lcd.SetTextColor    设置文字或图形颜色 lcd.SetBackColor    设置背景颜色 lcd.Clear           清屏 lcd.DrawRect        画矩形 lcd.DrawCircle      画圆 lcd.DrawEllipse     画椭圆 lcd.DisplayStringAt 显示文字 下面的程序先显示了两行文字,然后随机画矩形。 #include "mbed.h" #include "LCD_DISCO_F746NG.h" #define WIDTH 468 #define HEIGHT 260 LCD_DISCO_F746NG lcd; DigitalOut led1(LED1); uint16_t cnt; int main() { led1 = 1; lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"MBED EXAMPLE", CENTER_MODE); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.SetBackColor(0); lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"ICKEY.cn", CENTER_MODE); lcd.SetTextColor(LCD_COLOR_RED); lcd.DrawRect(10, 10, WIDTH - 10, HEIGHT - 10); lcd.SetTextColor(LCD_COLOR_GREEN); lcd.DrawCircle(200, 100, 100); wait(1); while(1) { lcd.SetTextColor(rand()); lcd.DrawRect(rand()%WIDTH, rand()%HEIGHT, rand()%WIDTH, rand()%HEIGHT); cnt++; if(cnt > 300) { cnt = 0; lcd.Clear(rand()); } wait(0.1); led1 = !led1; } } 注:画圆、椭圆的函数像素不能超过屏幕,否则程序会停止运行。 运行效果: 完整例子:

STM32F746-Disco试用4-在Keil中编译仿真Mbed程序

在前面我们已经将程序从Mbed在线编译器中导出了,下面就可以在Keil中编译、仿真和下载了,和正常的程序没有什么区别。仿真和下载都选择板载的ST-Link,使用SWD方式。 如果你直接下载运行这个例程,你会发现一个问题,下载后程序不会运行,LED也不闪。原来这是Mbed的一个bug,需要将程序选项中的Floating point hardware设置为Not Used。或者改用wait_us函数,wait_us函数不受影响。 完整的例子: