嵌入式_stm32
_lyl
这个作者很懒,什么都没留下…
展开
-
cortex_m3_stm32嵌入式学习笔记(二十):IIC实验(I2C串行总线)
IIC(Inter- Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA 和时钟SCL构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送, 高速 IIC 总线一般可达 400kbps 以上。ALIENTEK MiniSTM32 开发板板载的 EE原创 2015-01-26 15:25:58 · 6894 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十二):TFTLCD显示(深入库函数)
写点比较常用的显示函数。首先显示一张静止的画面,上面显示字符串(目前还不会显示汉字)只需要自己编写主函数,将别人例程里的lcd.c,lcd.h等相关头文件加到工程即可#include "led.h"#include "delay.h"#include "sys.h"#include "usart.h"#include "lcd.h"void init(){ delay_i原创 2015-01-23 10:29:12 · 11699 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十一):TFTLCD显示(初涉显示器)
本章我们将介绍 ALIENTEK 2.8 寸 TFT LCD 模块,该模块采用 TFTLCD 面板,可以显示 16 位色的真彩图片。TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为: Thin Film Transistor-Liquid CrystalDisplay。 TFT-LCD 与无源 TN-LCD、 STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有原创 2015-01-22 21:05:31 · 8562 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十六):ADC实验(模数转换)
之前没学过数模电,对A/D D/A转换一窍不通,也百度了很多资料大都深奥难懂。。算了,先自以为是一下吧,等以后学了专业课再说。。(寒假回家一定要学。。恩 就这么决定了)看了那么多资料,感觉 A/D转换就是将电压(或者是其他模拟量:如 压力,图像等)转换为数字,D/A就是反过来,而ADC就是A/D转换器,他可以采集外部电压转化为数字。本节实验通过ADC采集外部电压转换为数字显示在屏幕上。原创 2015-01-24 21:22:26 · 9415 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十八):DAC实验(数模转换)
STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。 DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。 DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。 DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下, 2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输原创 2015-01-25 16:55:29 · 10503 阅读 · 3 评论 -
cortex_m3_stm32嵌入式学习笔记(十七):内部温度传感器(ADC采集)
STM32 有一个内部的温度传感器,可以用来测量 CPU 及周围的温度(TA)。该温度传感器在内部和 ADCx_IN16 输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是 17.1μ s。 STM32 的内部温度传感器支持的温度范围为: -40~125度,精度为± 1.5℃左右(实际效果不咋地)。效果确实不咋地。。大冬天的测出来是20多度。。第一个原创 2015-01-25 13:50:25 · 13963 阅读 · 1 评论 -
cortex_m3_stm32嵌入式学习笔记(十四):RTC实时时钟(秒中断)
STM32 的实时时钟( RTC)是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。由于时钟只需要配置一次,下次开机不需要重新配置(开发板有电池的情况下),所以需要用到备份区域(BKP)来标记是否配置过时钟简单介绍BKP:备份寄存器是 42 个 16 位的寄存器( Mini原创 2015-01-24 14:31:32 · 6128 阅读 · 1 评论 -
cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)
很多单片机都有低功耗模式, STM32 也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的 HCLK 为 CPU 提供时钟,内核执行程序代码。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32 的低功耗模式有 3 种:1)睡眠模式原创 2015-01-24 16:46:12 · 10727 阅读 · 2 评论 -
cortex_m3_stm32嵌入式学习笔记(十):输入捕捉实验(定时器的输入捕捉)
输入捕获模式可以用来测量脉冲宽度或者测量频率。 STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。 STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值( TIMx_CNT)存放到对应的通道的捕获/比较寄存器( TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否原创 2015-01-22 18:45:30 · 11105 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十九):DMA实验(高速传输)
DMA,全称为: Direct Memory Access,即直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路, 能使 CPU 的效率大为提高。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。原创 2015-01-25 21:19:19 · 5248 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(二十四):内存管理实验(动态内存)
有用过C语言编程的童鞋对动态管理内存肯定有点了解。。好处就不多说了 今天实现STM32的动态内存管理内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。 内存管理的实现方法有很多种,他们其实最终都是要实现两个函数:malloc 和 free(好熟悉); malloc 函数用于内存申请, free 函数原创 2015-03-15 14:51:57 · 4606 阅读 · 0 评论 -
EEPROM && FLASH
看到后面老是提到这两个名词,搜了一堆凑凑看吧。存储器分为两大类:ram和rom。ram: 随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。存储单元的内容可按需随意取出或存入,且存取的速原创 2015-03-09 20:31:21 · 1108 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)
当我们学了TFTLCD显示之后遇到一个很明显的问题是:参数估计不准确,比如说我们想在屏幕的中央部分画一个圆,但往往坐标把握不准导致一次一次的往MCU里面烧程序,一次一次调,但没烧一次烧的可以MCU的命啊。。显然这样是很浪费的,于是牛逼的人就想了办法了(orz),我是用的原子写的USMART组件,该组件移植很简单,只需要将USMART文件夹拉到工程里面,然后把文件添加到工程里去,里面有一个文件 us原创 2015-01-23 14:18:02 · 3654 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(八):定时器中断实验(定时器的更新中断)
STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器。本节学习通用定时器 TIM3STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。STM3 的通用 TIMx (TIM2、 TIM3、 TIM4 和 TIM5)原创 2015-01-21 15:39:59 · 2529 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(九):PWM 输出实验(定时器的PWM输出)
PWM 简介脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。原创 2015-01-21 19:58:01 · 2370 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)
SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同原创 2015-01-26 20:37:18 · 5737 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(二十二):触摸屏实验(触摸屏驱动)
目前最常用的触摸屏有两种:电阻式触摸屏与电容式触摸屏。电阻式触摸屏在 Iphone 面世之前,几乎清一色的都是使用电阻式触摸屏, 电阻式触摸屏利用压力感应进行触点检测控制,需要直接应力接触, 通过检测电阻来定位触摸位置。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)原创 2015-02-06 17:06:07 · 6545 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(一):建立工程模板+跑马灯实验(IO输出)
搞了一晚上+一上午 终于算是入门了 刚刚把LED点亮。。真是费劲啊吐槽MDK对库函数的封装性。。太扯了 。。所有的固件库函数都要自己手动添加到工程里面去。。还好建好一个模板之后就不用动了(以后直接复制就行了)首先对于工程模板里的东西,我们要搞明白哪些是需要我们自己去编写的,而哪些是不用动的, 其实初学者应该只需要编写两个文件夹里面的程序:1 USER 文件夹下的主函数2. HA原创 2015-01-19 13:16:27 · 3320 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(三):串口实验(串口通信)
串口,可以理解为是用来和上位机(比如电脑)对话的,本节实验实现的是stm32接收上位机发送过来的信息,在原原本本的返回过去stm32有5路串口,本节学习的是其中之一的USB串口(USART1)和学习IO口一样,首先要配置串口,由于原子已经配好了写在sys文件里,本渣就本着不造轮子的理念(其实是太难不懂orz),先跳过去了。。所以本工程只需要一个main函数即可#include原创 2015-01-20 12:12:18 · 6380 阅读 · 1 评论 -
cortex_m3_stm32嵌入式学习笔记(五):独立看门狗实验(IWDG)
单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。感觉是是自动复位功能,就是在一定时间内你应该去喂它而如果程序中途进入了死循环(就是喂不了了)这个MCU就挂了。。但如果没开IWDG ,你不知道它挂原创 2015-01-20 21:09:12 · 3530 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(二):独立按键实验(IO输入)
上一个也就是第一个实验做的是关于LED的,属于IO口的输出使用,这一节实验是独立按键的使用,即IO 口的输入使用ministm32 开发板上一共有3个独立按键,分别为 KEY0 KEY1 WK_UP 原理图如下: 注意: KEY0 KEY1 是低电平有效(即它们为低电平时代表按键按下)而 WK_UP 是高电平有效,为什么呢。。很明显,这个问题要分析上面的原理图才能原创 2015-01-19 17:05:29 · 3282 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(二十三):红外遥控实验(输入捕捉+解码)
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。 红外遥控的编码方式目前广泛使用的是: PWM(脉冲宽度调制)的 NEC 协议和 PhilipsPPM(脉冲位置调制) 的 RC-5 协议的.ALIENTEK MiniSTM32 开发板配套的遥控器使用的是NEC 协议,其原创 2015-02-08 14:18:28 · 11444 阅读 · 2 评论 -
cortex_m3_stm32嵌入式学习笔记(六):窗口看门狗实验(WWDG)
窗口看门狗( WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。简单来说,和IWDG的区别就是IWDG要靠手动去喂狗,而WWDG有内置中断,所以可以利用设置中断服务函数去喂狗首先还是设置WWDG (记得往工程里面添加头文件)大致设置步骤如下:1)使能WWDG 时钟(系统内部时钟)2)设置窗口值和分频数3)开启原创 2015-01-21 11:03:51 · 2593 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(四):外部中断实验
本章学习将STM32的IO口作为外部中断输入(实现和按键扫描一样的功能)STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处。 STM32F103 的中断控制器支持 19个外部中断/事件请求。每个中断设有状位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F103 的19 个外部中断为:线 0~15:对应外部 IO 口的输入中断。(本章只学习原创 2015-01-20 15:46:15 · 5264 阅读 · 0 评论 -
cortex_m3_stm32嵌入式学习笔记(七):独立看门狗&窗口看门狗
总结一下这两种狗吧。。。1)独立看门狗没有中断,窗口看门狗有中断2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制3)独立看门狗只有下限,窗口看门狗又下限和上限4)独立看门狗是12位递减的。窗口看门狗是7位递减的5)独立看门狗是用的内部的大约40KHZ RC振荡器(不受系统时钟限制,即使系统时钟坏了也能工作),窗口看门狗是用的系统时钟APB1ENR(系统时钟要是挂了就完了原创 2015-01-21 11:20:39 · 1755 阅读 · 0 评论 -
STM32中中断优先级理解
很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()——配置优先级分组方式,会很不理解,尤其是看中文翻译版的,因为中文翻译版里把这里翻译成“先占优先级和从优先级”这样翻译其实是不对的,很容易让人误解。为了便于大家理解,有必要先解释两个概念:抢占式优先级/响应优先级:STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先转载 2015-01-21 09:48:16 · 2061 阅读 · 0 评论 -
指针函数和函数指针的区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针类型标识符 *函数名(参数表)int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一转载 2015-03-10 20:37:20 · 606 阅读 · 0 评论