嵌入式软硬件开发
nwsuaf_huasir
“奥雷里亚诺,马孔多在下雨”,“别犯傻了,赫里内勒多,八月下雨很正常。”
展开
-
香橙派AIpro使用SSH远程登录
香橙派AIpro可以连接HDMI显示器使用,也可以远程登录。这里采用MobaXterm软件远程登录开发板。原创 2024-05-26 19:07:44 · 393 阅读 · 0 评论 -
香橙派AIpro(OrangePi AIPro)开发板初测评
最近,我拿到手一款Orange Pi AI Pro 开发板,它是香橙派联合华为精心打造的高性能AI 开发板,其搭载了昇腾AI 处理器,可提供8TOPS INT8 的计算能力,内存提供了8GB 和16GB两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。原创 2024-05-26 18:58:54 · 483 阅读 · 0 评论 -
MSP430定时/计数器TimerA中断解惑
刚学过51单片机,再来学习MSP430F149,在定时器中断这一块,对于初学者还是有一定难度的,这是因为430的定时器配置更为灵活,比51要复杂好多,下面我把我初学时遇到的一些问题写下来供大家参考。1、首先,用户指南中有Three configurable capture/compare registers这句话,这表明430有三个捕获比较单元可以用来配置,那么多几个捕获比较单元有什么用?答案...原创 2017-11-03 12:29:50 · 10691 阅读 · 9 评论 -
有关锁相环的一些思考
为什么要用锁相环?我刚开始接触锁相环的时候,总认为锁相环就是为了实现相位同步的,那为什么用它来实现频率合成。我们知道,一般的电子电路都需要一个时钟来驱动,经常采用的是晶振。一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,VCO是指压控振荡器,采用VCO实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。...原创 2021-12-28 14:33:43 · 319 阅读 · 0 评论 -
ADS42LB69+ZYNQ zcu102调试记录
近期采用ZYNQ开发板zcu102,结合FMC的AD板卡做数据采集,AD采样频率250MHz,AD芯片是ADS42LB69,是一个双通道的高速AD,今天终于调通了一路,记录于此首先最最重要的是时钟线的引脚分配,我之前就是被这个问题折磨的不行set_property PACKAGE_PIN N9 [get_ports adc_1_dclk_p_in] #ad的输出时钟,差分时钟250MHzset_property IOSTANDARD DIFF_HSTL_I_18 [get_ports ad原创 2021-10-09 11:22:28 · 3206 阅读 · 1 评论 -
如何免ROOT卸载手机系统软件
我们的手机上往往会有一些系统捆绑的软件,不仅允许就给咱装到手机上,浪费空间不说看着也碍事,作为处女座的我实在无法忍受,然而想要卸载手机上的系统软件,常常需要ROOT,在我一波操作后依然无法ROOT,无奈放弃。柳暗花明的是,后来我在贴吧找到一种方法,成果的解决了我的问题,兴奋至极难以入睡,写在博客里让更多爱动手的小伙伴看到从而少走弯路,都能用上干干净净的手机。材料:电脑一台,数据线,手机过程:...原创 2020-02-29 21:50:22 · 4502 阅读 · 0 评论 -
带参宏定义
在STM32库函数开发中,直接使用库函数可能不太方便,我们可以开发一些简单的函数供自己调用。使用带参的宏定义更加简化了程序的开发。比如点亮led#define LED2(a) if(a)\ GPIO_SetBits(GPIOA,GPIO_Pin_0);\ else\ GPIO_ResetBits(GPIOA,GPIO_Pin原创 2017-11-16 16:41:25 · 454 阅读 · 0 评论 -
STM32-1-LED点亮与熄灭
led.c文件#include "led.h"void LED_Init(void){ //¶¨ÒåÒ»¸öGPIO_InitTypeDefÀàÐ͵ĽṹÌå GPIO_InitTypeDef GPIO_InitStructure; //¿ªÆôPA¿ÚʱÖÓ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA原创 2017-11-16 16:02:32 · 2234 阅读 · 0 评论 -
STM32库函数开发工程模板
看了好多资料,自己也亲手写了好多程序,发现虽然都是库函数开发,但是对于文件的组织是不一样的,比如有的人喜欢有OBJ,而有的人用LISTING,那么到死怎么样好,关于文件的组织形式也真是够让人头疼的,总感觉是被别人牵着鼻子走,不想之前学习51单片机或者MSP430单片机,那时候是操作寄存器的,更加的直观。现在感觉开发好困难,单单一个工程模板都搞不定,只能照抄别人的。我个人觉得使用一下的组织方式还原创 2017-11-15 17:45:24 · 862 阅读 · 0 评论 -
FLYMCU串口下载配置界面
在自动下载的时候要选择RTS高电平复位,DTR高电平进BOOTLOADER原创 2017-11-15 18:31:15 · 6929 阅读 · 0 评论 -
msp430单片机硬件乘法器Hardware Multiplier
学习过430的朋友一定听说过硬件乘法器,那么它有什么用?首先,51单片机是不具备硬件乘法器的,低级的单片机大多没有Hardware Multiplier,对计算机了解的朋友应该都知道,CPU进行乘除运算要比一般的加减移位等运算更加耗时。像51单片机进行一次乘除运算就需要四个机器周期。硬件乘法器就是专门用于有符号/无符号乘法和乘累加运算的,傅里叶变换在计算机中实现就是进行乘累加的。它有两个16B原创 2017-11-06 14:28:16 · 2162 阅读 · 0 评论 -
msp430单片机Timer_A产生两路定时器
#include int main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1SEL |= BIT2+BIT3; //P1.2->TA1 P1.3->TA2 P1DIR |= BIT2+BIT3; //P1.2,3 direction原创 2017-11-06 09:47:11 · 899 阅读 · 1 评论 -
MSP430F149单片机能输出多少路PWM波?
在使用430的PWM波的时候,我一直有一个困惑,那就是它到底能输出几路PWM波?我想别的朋友可能也有相同的困惑,在我查找了好多资料之后最终搞懂了,下面分享一下学习经验。首先,MSP430F149有两个16位的定时器Timer_A和Timer_B,其中TA有3个捕获比较单元,TB有7个捕获比较单元,产生PWM波需要将定时器配置在比较模式下,刚开始我以为既然TA有三个捕获比较模块,那么就应该有三个原创 2017-11-05 22:40:13 · 3405 阅读 · 2 评论 -
msp430输出PWM波
MSP430单片机的定时器除了可以捕获,比较之外,还可以作为PWM波产生器直接在芯片内部联通IO口。在官方手册上就有:Timer_B7 is a 16-bit timer/counter with seven capture/compare registers. Timer_B7 can support multiplecapture/compares, PWM outputs, and原创 2017-11-03 20:57:18 · 17661 阅读 · 2 评论 -
基于AD9854个和MSP430的波形发生器
AD9854是AD公司推出的DDS波形发生器,可以产生正弦波、方波和调幅波等。亲测,使用20MHz的晶振,可以产生高达60MHz的稳定波形。#include#include"ad9854dds.h"#define uint unsigned int#define uchar unsigned char#define ulong unsigned long//ulong Freq_原创 2017-12-09 09:53:28 · 2650 阅读 · 2 评论 -
树莓派IO操作
首先需要安装库01sudoapt-get installpython-rpi.gpio对照IO表: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPI原创 2017-12-12 10:29:46 · 762 阅读 · 0 评论 -
AD9854+STM32正弦波信号发生器
https://pan.baidu.com/s/1oBLHT23-HahRMiAKpZWaZQAD9854使用20M晶振,MCU为STM32F103ZET6,该程序可以在百度网盘免费下载。原创 2018-06-12 23:16:11 · 9744 阅读 · 9 评论 -
STM32的启动模式
刚开始接触STM32,最先遇到的问题就是下载程序。我按照教程,使用串口下载,感觉很简单。但是,最近需要使用LCD12864,就把以前的MSP430上的程序移植了一下,结果我发现了一个奇怪的现象,每次下载完程序后,断电,再上电后,液晶屏就不再显示了。这让我感到无比的头疼,因为我总以为是我的程序有问题,反反复复修改了好多遍,经过几个小时的调试,我最终找到了问题的缘由:那就是启动模式。STM32不同原创 2018-05-08 11:33:01 · 531 阅读 · 1 评论 -
ESP8266简介
ESP8266硬件接口丰富,可支持UART,IIC,PWM,GPIO,ADC等,适用于各种物联网应用场合。//+++++++++++++++++++++++++++++// 基本参数//--------------------------------------------------- //模块 型号 ESP8266-01 主芯片原创 2018-04-19 15:43:45 · 30382 阅读 · 0 评论 -
物联网开发板ESP8266的调试与使用
最近刚入手ESP8266,也就是Nodemcu。过去使用过51单片机,MSP430单片机和STM32,也玩过UC/OSII,由于最近需要用到物联网方面的硬件,所以买了一个NodeMCU。在我看来,这就是一个自带WiFi模块的单片机,它的使用方法也比较特殊,官方推荐使用Lua语言开发,也可以用Arduino的IDE开发。当使用Lua开发的时候,需要先刷固件,这可能对于一些同学理解起来的有点费...原创 2018-04-19 14:42:19 · 4125 阅读 · 0 评论 -
基于MSP430内部10位ADC的模数转化并通过串口发送
//******************************************************************************// MSP-FET430P140 Demo - ADC12, Using the Internal Reference//// Description: ////// MSP430F149...原创 2017-12-07 23:10:58 · 3157 阅读 · 6 评论 -
UC/OS-II的任务堆栈
堆栈就是一种先入后出的数据结构,在UC/OS-II操作系统中每一个任务都会有自己的任务堆栈,那么什么是任务堆栈。我的理解是,任务堆栈就是一片空间,它可以存储一些信息,因为在操作系统下,程序是并发运行的,也就是说,一个用户程序不可能一下子执行完,比如任务1执行了一半,再执行任务2,那么我们就得把一些中间结果保存起来,这个保存到额地方就是任务堆栈。严格的说它有以下两个作用:当任务切原创 2017-11-25 18:10:25 · 515 阅读 · 0 评论 -
单片机结合CH376的U盘读写的一般步骤
4.4. 文件读写的参考步骤4.4.1. 初始化,进行任何一项文件操作之前的必要步骤① 调用 mInitCH376Host 初始化,进入 USB-HOST 工作方式或者 SD 卡主机工作方式(模式 3)② 等待 U 盘或者 SD 卡连接,U 盘可以由 CH376 自动检测并产生中断通知,或者由单片机调用子程序CH376DiskConnect 定期查询,SD 卡必须由单片机自行检测原创 2017-11-13 15:09:01 · 6240 阅读 · 0 评论 -
基于CH376的U盘读写
CH376 对 U 盘文件的读写方式分为两种:扇区模式和字节模式;CH376 对 SD 卡文件的读写方式只有一种是字节模式。扇区模式下,以扇区(每扇区通常是 512 字节)为基本单位对 U 盘文件进行读写,所以读写速度略快,但是通常情况下需要额外的文件数据缓冲区,额外的文件数据缓冲区必须是扇区长度 512 的整数倍,所以适用于 RAM 多、数据量大、频繁读写数据的单片机系统。扇区读原创 2017-11-13 14:41:50 · 6311 阅读 · 0 评论 -
msp430单片机的复位
在学习MSP430单片机的时候,经常会遇到一个问题,那就是单片机上电复位以后它到底是什么样的状态?因为它功能复杂,且资源丰富,IO管脚很多,时钟和低功耗模式配置灵活,那么上电后它们处于什么样的状态?对于电子开发的工程师而言,芯片手册是最好的文档,而且要学会阅读英文的手册,以下我就通过TI公司的用户指南帮助大家一步一步缕清楚,上电复位。首先我们要了解430单片机的复位包括POR(po原创 2017-11-01 16:21:22 · 5572 阅读 · 0 评论 -
STM32添加路径报错
编译器显示 ucannot open source input file "stm32f10x_lib.h",:no such file or direct是因为没有正确的添加库文件的搜索路径。每个文件名的反斜杠前面要有两个点。原创 2017-10-15 21:21:52 · 1658 阅读 · 1 评论 -
MSP430切换主时钟
MSP430F149单片机有多个时钟源,上电后默认的系统主时钟是内部800KHz的DCO,如何切换为尾部晶体振荡器,需要注意的是如果切换不成功,便会使CPU失去时钟,那样会导致系统卡死,因此要不断查询,时钟失效的标志位,以下为IAR环境下程序:#includeint main( void ){ unsigned char i; // Stop watchdog timer原创 2017-10-03 17:59:05 · 824 阅读 · 0 评论 -
msp430ADC程序
上图是ADC的内部工作原理图,通过这个图,我们可以知道430有16个转化通道,16个转化结果寄存器和16个控制寄存器其中ADC12MEMX与ADC12MCTLX是一一对应的,但是要注意的一点是通道Ax并不与ADC12MEMX相对应,也就是说A1的转化结果不一定非得放到ADC12MEM1当中,ADC12MCTLX中的INCHx可以确定ADC12MEMX存放哪个通道的转化结果。下面附一个单原创 2017-11-07 17:56:06 · 1234 阅读 · 1 评论 -
MSP430按键控制LED闪烁频率
MCU为430F149,编译环境为IAR,主时钟使用频率的800KHz,内部DCO。LED->P2.0, KEY1->P1.0, KEY2->P1.1。亲测可用。/***********************************************程序描述:单片机的P1.0,P1.1连接两个独立按键,P1.0->KEY1,P1.1->kEY2,由外部中断下触发。P2.0->LED,原创 2017-10-29 20:04:24 · 6919 阅读 · 1 评论 -
MSP430单片机的ADC详解
ADC模数转化器是430单片机的重要的片上外设,而且在开发当中也常常需要用到ADC,下面根据使用手册结合我个人的学习感悟,总结一下430的ADC的使用要点。430的ADC的特点:1、是一个12位的逐次比较式的ADC,即转化结果为0-4096。2、独立于CPU,可以通关软件配置自己的时钟源。3、有8个转化通道,并且可以通关软件配置它的正负参考电压。4、转化速率>=200KSPS,原创 2017-11-06 22:23:48 · 13408 阅读 · 1 评论 -
MSP430F149按键检测程序
该程序由IAR编译运行,使用单片机的P1.0~P1.3口作为四个独立按键。由外部中断的下降沿触发。/***********************************************程序描述:单片机的P1.0~P1.3连接四个独立按键,外部中断下触发*作者 :huasir*时间 :2017.10.28*******************************原创 2017-10-28 21:59:32 · 2804 阅读 · 0 评论 -
LCD1602使用说明
一、学习目的 学会如何使用一个新的模块:从硬件上获得接口的了解;查看芯片的数据手册,了解接口的使用方法写程序时要遵循 硬件电路 –> 硬件接口 –> 软件编程 这三个部分LCD使用要点:要明白AC就是内部数据指针的地址,DDRAM即存储显示数据的存储器,每次显示,都要想明白往哪个地址上写数据。要学会通过使用手册上的时序图来学习如何编写读写数据的函数,最终的一点还要会硬件连接。原创 2017-10-28 21:17:44 · 5535 阅读 · 0 评论 -
启动文件
startup.a51中一般已经包含了main标号,初学者写汇编如果还包含启动文件,容易出现符号重定义错误。而且用汇编多半意味着编程者希望事必躬亲,从初始化到向量配置等等底层工作全部包干,这种情况下startup.a51在编程者眼中完全是垃圾。 而对于采用C/C++编写程序就是完全另一回事了。这类编程者多半对于硬件底层未见得需要了解得多么透彻,启动文件准备好了一个可预测的初始工作环境,方便高级原创 2017-10-27 10:37:56 · 421 阅读 · 0 评论 -
STM32的时钟系统
就像MSP430的超低功耗单片机一样,STM32也有多个时钟,具体的说STM32有四个时钟源:(1)高速外部时钟(HSE):4~16MHz外部晶振,一般使用8MHz,给CPU提供时钟信号。(2)低速外部时钟(LSE):一般采用32768手表晶振,6P负载晶振。因为它比较精确,所以可以位实时性高的模块用。(3)高速内部时钟(HSI):它由内部RC振荡电路产生,频率为8MHz,为CPU提供原创 2017-10-19 10:25:48 · 672 阅读 · 0 评论 -
MSP430单片机USART串口发送字符和字符串
在MSP430单片机的官方历程中有使用串口中断发送字符以及字符串的程序,但是移植性不高,我专门写了两个函数,用于发送单个字符合字符串,不需要使用中断,供大家参考。/***********************************************程序描述:单片机的P3.4、P3.5作为串口发送字符和字符串*作者 :Zhenhua Liu*时间 :2017.11.01原创 2017-11-01 23:15:37 · 13631 阅读 · 2 评论 -
Ardunio简介
相信很多电子爱好者都会知道一款叫Ardunio的单片机,它是一款非常简单的单片机,这是因为Arduino 语言是建立在 C/C++基础上的,其实也就是基础的 C 语言,Arduino 语言只不过把 AVR 单片机(微控制器)相关的一些寄存器参数设置等都函数化了,不用我们去了解他的底层,让不太了解 AVR 单片机(微控制器)的朋友也能轻松上手。我的理解是,它的独特之处在于它的开发环境,里面有很多函数原创 2017-10-25 11:03:57 · 2107 阅读 · 0 评论 -
MSP430操作ADC0808程序
虽然MSP430F149自带10位的ADC,出于各种原因,我还是选用了ADC0808作为AD转化,下面是程序:#include#include"lcd.h"#define DATA_DIRIN P3DIR=0x00;#define DATA P3IN#define START_DIROUT P4DIR|=BIT0 //P4.0->START#define CLR_START原创 2017-11-11 18:02:04 · 862 阅读 · 0 评论 -
MSP430定时/计数器TimerA的使用详解(一)
MSP430定时器A是一个16位的定时器,简图如下:有四个时钟源,并且支持分频。当选择好时钟源之后需要选择定时器的工作模式:通过MCx的值可以确定工作模式,其中有Stop,Up,Continuous,Up/down 四种模式。其实第一种就是定时器没有工作。Up从0一直计数到到TACCR0寄存器的值。这种模式就是上图所示,TACCR0Continuou原创 2017-11-02 20:47:24 · 16472 阅读 · 3 评论 -
STM32库开发
一切计算机科学的问题都可以用分层来解决,从汇编到C,从直接配置寄存器到使用库,从裸机到系统,从操作系统到应用层软件,无不体现着这样的分层思想。开发的软件多了,跨越的软件层多了,会深刻的认同他的这句话,分层思想在软件开发上体现的淋漓尽致,分层使得问题变得简单,能够屏蔽底层实现方式的差异,使得软件开发变为简单的调用函数接口,而不用管它的实现,大大提高效率。STM32使用库函数开发,就是建立了一个新原创 2017-10-26 15:34:28 · 356 阅读 · 0 评论 -
MSP430串口接收控制LED
/********************************************** *程序描述:单片机的P3.4、P3.5作为串口接收字符,将接受到的字符再发送出去*并且根据接受到的字符‘1’‘2’‘3’‘4’分别点亮LED1、LED2、LED3、LED4P2.0->LED1 ,P2.1->LED2, P2.2->LED3 ,P2.3->LED4*作者 :Zhenh原创 2017-11-02 19:57:50 · 1962 阅读 · 1 评论