
嵌入式系统
文章平均质量分 67
和风化雨
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LP-MSPM0G3507学习--11ADC之二双通道高速DMA采样
DMA(Direct Memory Access)直接存储器存取,是一种实现高速存取数据的方法,配置好后,外设寄存器的数据可以不经CPU,自动搬运到指定存储器位置;指定存储器位置的数据,也可以不经过CPU,自动搬运到外设寄存器。外设传输至存储器,多为Fixed address to Block address。存储器传输至外设,多为Block address to Fixed address。原创 2025-07-25 22:51:52 · 313 阅读 · 0 评论 -
LP-MSPM0G3507学习--09定时器之四输出PWM
关键函数。原创 2025-07-21 12:27:11 · 150 阅读 · 0 评论 -
LP-MSPM0G3507学习--08定时器之三比较和捕获
首先要明白什么是比较和捕获。定时计数器(Counter,CNT)是根据输入一串脉冲信号来计时的,当其值达到某一个值(该值保存在称之为捕获比较寄存器,Capture/Compare Register,CCR)系统发出一个或多个信号,这就是比较,即将CNT与CCR中值进行比较。捕获是指捕捉某信号来启动和停止定时计数器,通过读取CNT中计数来计算两个信号之间的间隔,通常用来测量时间周期等。原创 2025-07-21 12:26:13 · 199 阅读 · 0 评论 -
LP-MSPM0G3507学习--07定时器之二定时节拍
不仅通用定时器可以产生定时节拍,MSPM0G3507微控制器中,还有两类外设可以产生定时节拍,即System Tick(系统滴答、系统时钟定时器)、WWDT(Window watch dog timer,窗口看门狗定时器)原创 2025-07-20 23:04:07 · 246 阅读 · 0 评论 -
LP-MSPM0G3507学习--06定时器之一基础篇
G3507有7个定时器支持多达 22个 PWM 通道,支持 QEI,两个具有死区支持和多达 12个 PWM 通道的 16 位高级计时器,在前面的按键实验中采用管脚中断实现,现在有定时器定时扫描实现,这也是一种非常常见的处理方式。这7个定时器为5个通用定时器TIMG0,TIMG6,TIMG7,TIMG8,TIMG12;以及2个高级定时器TIMA0,TIMA1。高级定时器TIMAx和通用TIMGx的区别TIMAxTIMGx计数器16位16位,除了TIMG12为32位独立通道数121。原创 2025-07-19 00:17:45 · 298 阅读 · 0 评论 -
LP-MSPM0G3507学习--05中断及管脚中断
宏名称作用示例值GPIOA中断号GPIOA在GROUP1中的索引由SDK头文件定义具体引脚宏。原创 2025-07-18 23:16:52 · 1132 阅读 · 0 评论 -
LP-MSPM0G3507学习--04GPIO控制
已经初步学习了GPIO的输出功能,学习了如何配置。现在实现按键S2按下时,led1翻转。原创 2025-07-18 21:45:05 · 450 阅读 · 0 评论 -
LP-MSPM0G3507学习--03时钟配置
双击项目syscfg文件,激活sysconfig,点击clock tree。原创 2025-07-18 20:47:25 · 258 阅读 · 0 评论 -
LP-MSPM0G3507学习--02建立新工程
出现下图。原创 2025-07-18 13:23:21 · 453 阅读 · 0 评论 -
LP-MSPM0G3507学习--01环境安装
注意事项:不要出现中文字符安装过程:原创 2025-07-18 11:51:21 · 286 阅读 · 0 评论 -
STM32 微控制器命名规则图解
原创 2025-07-06 11:17:08 · 179 阅读 · 0 评论 -
STM32F103RCTx的PWM输出控制电机
计数器设置:预分频72-1 (1MHz时钟),周期1999 (500Hz)使用TIM2定时器中断实现按键扫描(10ms间隔)长按支持:按键保持按下时,每200ms触发一次调整。占空比范围:0-1999 (0-100%)低功耗设计(主循环使用HAL_Delay)初始占空比:50% (CCR=1000)输出引脚:PA8 (TIM1_CH1)按键消抖:30ms确认按下(3次扫描)步进调整:10% (200步进值)DOWN键(PA1):减少占空比。在定时器中断中更新PWM占空比。UP键(PA0):增加占空比。原创 2025-07-05 23:22:36 · 553 阅读 · 0 评论 -
stm32的三种开发方式
stm32的三种开发方式:寄存器开发、标准库开发和HAL库开发原创 2025-07-05 22:24:12 · 442 阅读 · 0 评论 -
STM32F103RCT6学习之六:TFT_LCD的使用
该模块支持65K色显示,显示分辨率为320×240,接口为Intel提出的16位8080总线标准,自带触摸屏,其中xpt2046为触摸控制器。共需要定义22个管脚。原创 2024-12-29 09:38:05 · 672 阅读 · 3 评论 -
STM32F103RCT6学习之五:ADC
ADC数据对齐:数据右对齐数据左对齐。原创 2024-12-28 22:46:44 · 636 阅读 · 0 评论 -
STM32F103RCT6学习之四:定时器
定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。原创 2024-12-28 22:15:14 · 1572 阅读 · 0 评论 -
STM32F103RCT6学习之三:串口
如果重定向printf或sprintf,只需要重定义fputc和fgetc()huart1是一个串口句柄,定义在usart.c中。原创 2024-12-28 00:30:57 · 740 阅读 · 0 评论 -
STM32F103RCT6学习之二:GPIO开发
要求KEY1控制LED0,按一下点亮,再按一下熄灭要求KEY1控制LED2,按一下点亮,再按一下熄灭要求KEY_WKUP控制LED0、LED1,按一下取反。原创 2024-12-27 22:14:19 · 556 阅读 · 0 评论 -
STM32F103RCT6学习之一:基本开发流程
STM32开发原创 2024-12-27 09:50:42 · 366 阅读 · 0 评论 -
嵌入式系统程序架构的进化
嵌入式系统程序架构的进化原创 2022-11-28 12:55:45 · 1551 阅读 · 1 评论 -
从GPIO实现控制LED发光二极管开始说起之一
一般说来,GPIO是所有MCU必备的,最常见,也是最容易使用的设备。虽然简单,但学好了也不容易,实际上能够将GPIO功能实现好,MCU的基础学习也可以说是完成大半了。下面的系列我们假设认为所有的读者都会C语言。从简单控制一个LED闪烁开始:/*实例0*/#include"reg51.h"void delay(unsinged int t){ while(--t);}void main(){ //初始化 //工作循环 while(1){ //L.原创 2020-12-16 20:44:33 · 4094 阅读 · 0 评论 -
从GPIO实现控制LED发光二极管开始说起之二
不管是LED还是数码管,其本质是一样的,控制的方法类似,它们都是输出设备,本节讨论输入设备:按键。按键和LED及数码管都是人机交互的设备,用于人与机器信息交互,也是一种比较简单的设备。...原创 2021-01-18 21:28:34 · 1158 阅读 · 1 评论 -
从GPIO实现控制LED发光二极管开始说起之三
前述两节主要讨论GPIO端口的一般使用方法,本节讨论GPIO的另一个常用用途:总线模拟。嵌入式系统应用场合是多种多样的,需要的设备也是多种多样,而微控制器本身提供的设备一定是有限的,而设备本身和MCU之间的通讯方式也是各有不同,在这种情况下我们就可以考虑用GPIO模拟设备与MCU之间的接口。目前比较典型的有采用74HC594实现串转并功能、DS18B20实现单总线功能、SPI总线功能等1.采用74HC595实现串转并功能在第一节中我们利用8个管脚实现了流水灯功能,但是我们也可以看到每一个LE原创 2021-01-20 12:32:14 · 1074 阅读 · 0 评论 -
从GPIO实现控制LED发光二极管开始说起之四
掌握前面三节的内容我们已经可以解决很多问题了,但是我们会发现还有很多问题,比如说在模拟单总线的时候我们要精确的调整时间,而我们是采用空循环的形式实现时间延时的,具体一次循环会延时多久我们是不知道的,我们常用的做法是一遍遍调整:“觉得”时间短了,循环的次数大写,“觉得”时间长了,循环次数改小些......“觉得”实际上是不可靠的,耗费了你大量的精力在调节参数上,而且将宝贵的计算机运算能力放在空循环上,这不是一种浪费吗?有这个时间计算机做些别的,系统的运行速度不是更快?另外我们看看键盘扫描功能,程序一遍又一遍的原创 2021-03-08 21:23:49 · 965 阅读 · 0 评论 -
从GPIO实现控制LED发光二极管开始说起之五
嵌入式学习后续原创 2021-03-10 11:18:01 · 465 阅读 · 0 评论 -
什么叫中断?
场景一假如你正在写作业,你的舍友来找你去打球(中断),你停下手中的笔,折好书页(保存中断现场),和舍友一起打球(中断服务程序),你打得爽了,回来梳洗一番,拿起笔,打开书本折页的地方(中断恢复),继续写作业。场景二假如你正在写作业,你舍友喊你去打球,你正在打球,你女朋友喊你去逛街,你陪女朋友逛街,然后回来作业----中断嵌套场景三假如你正在写作业,你女朋友喊你去逛街,你陪女朋友逛街,接到你舍友电话喊你去打球,你拒绝,继续陪陪女朋友逛街----中断优先级场景四鉴于上次有太多人打扰结果原创 2021-11-16 21:41:33 · 2838 阅读 · 0 评论 -
LK32T102学习7-LCD12864
RS/CS--片选,高电平有效RW/SID--串行数据输入端E/SCLK-- 串行同步信号,上升沿时读取SID信号PSB--数据传输方式选择,高电平为并行方式,低电平时为串行方式RST--复位端,低电平有效#ifndef __LCD12864_H#define __LCD12864_H//重要的也就是这4个函数了,其他的就不要管了void lcd_init(void);void lcd_clear(void);void lcd_wstr(uint8_t y_add, ui..原创 2021-11-14 01:01:44 · 2687 阅读 · 13 评论 -
多种方式实现数码管的动态显示
--74HC138实现动态显示,减少口线的使用/*实例:采用74HC138控制,输出数码guan*/#include"reg51.h"void delay(unsigned int t){ while(t--);}unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xFF};unsigned char dis.原创 2021-10-19 13:20:20 · 3676 阅读 · 0 评论 -
树莓派的简单应用--语音识别控制智能垃圾箱
前一段时间用树莓派做了一个语音识别控制的智能垃圾箱,通过麦克风获取语音然后送到百度进行识别,根据返回的结果控制四个舵机(开启垃圾)或发出语音提示整个工程的架构如下:其中主程序:# coding=utf-8import sysimport jsonimport timeimport osimport RPi.GPIO as GPIOreload(sys)sys.setdefaultencoding('utf8')IS_PY3 = sys.version_info.majo原创 2021-06-06 19:05:14 · 1172 阅读 · 5 评论 -
为什么GPIO置位与清零要分开?
在嵌入式系统开发中,用C语言进行位操作,设置管脚的值等是非常多的,在操作的同时我们有希望不要影响其他位的值,通常我们是要首先保存其他管脚的值,然后在设置,如我们置位PA0管脚(不采用C51的位操作):PA->OUT&=~(1<<1);置位操作:PA->OUT|=1<<1;语句结构是非常复杂的,而且要翻译成多条汇编指令。引入置位与清零寄存器后,置位:PA->OUTSET=1<<1;清零:PA->OUTC原创 2021-03-18 16:45:14 · 1145 阅读 · 1 评论 -
样例分析1--ADC1.1
1.ADCv1.1主代码:int main( void ){ Device_Init(); TIM0_Init_PWM(1000,0);//TIM0 - CH2通道输出PWM TIM6_T0_Init();//定时器T6-T0初始化 TIM6_T1_Init(); ADC_Init();//ADC配置初始化 PB -> OUTEN |= 0x04ff;//PB输出使能 PB -> OUT = 0xffff; PA_OUT_ENABLE(12);//蜂鸣器原创 2021-03-14 23:25:20 · 462 阅读 · 0 评论 -
LK32T102学习6-中断
LTK320T学习6-中断原创 2020-12-28 23:39:50 · 2154 阅读 · 3 评论 -
LK32T102学习5-PWM
LTK320T学习5-PWM原创 2021-02-24 23:02:21 · 2997 阅读 · 11 评论 -
LK32T102学习4-定时计数器
LTK320T学习4-定时计数器原创 2020-12-26 16:10:24 · 5774 阅读 · 24 评论 -
LK32T102学习3-ADC
AD原创 2020-12-25 23:33:48 · 2866 阅读 · 25 评论 -
LK32T102学习2-GPIO
GPIO原创 2020-12-25 21:06:13 · 4453 阅读 · 3 评论 -
LK32T102学习1-概述
LK32T原创 2020-12-25 20:49:01 · 2681 阅读 · 1 评论 -
LK32T102学习-0
工程建立步骤:建立一个文件夹,文件夹的名称就是任务名称,如XX 将test1-gpio文件夹中的内容全部拷贝到XX 通过uVision(或直接点击XX文件夹下的*.uvprojx)打开工程 打开工程文件夹下的main.c文件 修改main函数,其余不动main函数结构int main(){Device_Init(); //不要动//添加你的其他初始化代码while(1){//工作循环 //添加需要一直需要做的工作代码,如显示等...原创 2020-12-25 09:27:53 · 5056 阅读 · 9 评论 -
Cortex-M0学习
状态与模式:传统的ARM7核有ARM状态和Thumb状态,有7种模式,比较复杂Cortex-m0只有调试状态和Thumb状态,有两种模式,两种模式相当于内核态和用户态内核寄存器:寄存器组:R0~R15,其中R13也是堆栈指针SP。SP在不同的物理位置有两个堆栈指针,一个是MSP(主栈指针),用于处理异常;一个是PSP(进程栈指针),一般没有必要使用,由CONTROL寄存器配置。特殊寄存器:xPSR--->状态寄存器:APSR,IPSR,EPSR--->以前2个:CPSR,原创 2020-12-24 12:20:51 · 2124 阅读 · 0 评论 -
嵌入式程序处理流程
摘抄自《ARM Cortex-M0权威指南(第二版)》应用程序处理流程通常有如下几种方式:原创 2020-12-24 11:13:25 · 585 阅读 · 0 评论