Cortex M3/STM32F103
a1314521531
这个作者很懒,什么都没留下…
展开
-
STM32 —— 中景园0.96寸OLED
STM32 —— 中景园0.96寸OLED OLED,即有机发光二极管( Organic Light Emitting Diode )。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD 都需要背光,而 OLED 不需要,因为它...原创 2018-05-24 16:19:59 · 12913 阅读 · 16 评论 -
STM32f103C8T6 bootloader设计
STM32 bootloader设计 使用的是STM32f103C8T6:64Kflash,在应用程序中通过CAN把接受到的bin写到外置 flash的指定地址处。在bootloader中判断一个单独的标志位看程序是否需要升级,如果需要升级,则复制外置flash处的内容到STM32的内置flash的指定地址处。如:bootloader地址:0x08000000UL原创 2017-02-09 17:37:11 · 10726 阅读 · 3 评论 -
STM32F103按键操作的另一种实现——状态机
void GPIOConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode);#ifndef _KEY_H_#define _KEY_H_#include "HAL_gpio.h" // 换成STM32F103对应的GPIO库#include "type.h" // type.h主要是一些类型原创 2016-09-08 12:55:41 · 11846 阅读 · 3 评论 -
单片机中通用的类型别名
单片机中通用的类型别名#ifndef _TYPE_H_#define _TYPE_H_#ifdef __GNUC__#define __packed __attribute__((aligned(1)))#endif/* exact-width signed integer types */typedef signed char int8_t;type原创 2016-08-26 09:28:45 · 1186 阅读 · 0 评论 -
STM32 LED灯的另一种写法
STM32 LED灯的另一种写法#ifndef __BSP_LED_#define __BSP_LED_#include // 这个换成STM32的库文件就行#include "type.h"//==================================================================================#define LE原创 2016-08-26 15:37:42 · 4530 阅读 · 2 评论 -
STM32启动文件——startup_stm32f10x_hd.s
STM32启动文件——startup_stm32f10x_hd.s宗旨:技术的学习是有限的,分享的精神的无限的。 一、启动文件的作用 (关于启动代码的作用,前面已经提到过了,这里再啰嗦一下)(1)初始化堆栈指针 SP;(2)初始化程序计数器指针 PC;(3)设置堆、栈的大小;(4)设置异常向量表的入口地址;(5).配置外部 SRAM 作为数据原创 2016-04-10 14:57:58 · 21431 阅读 · 2 评论 -
7E加码解码
//===========================================================================// 加密单个字符uint8_t*hdlc_encode_buf(uint8_t *buf, uint8_t c){ switch (c) { case 0x7E: *buf++ = 0x7D; *buf++原创 2016-09-04 09:27:14 · 1521 阅读 · 1 评论 -
GBT19056精要
GBT19056精要1、专业术语1.1脉冲系数impulse ratio:车速传感器在车辆行驶1km距离过程中产生的脉冲信号个数。1.2行驶开始时间 starttime of travelling:车辆从静止状态转变为行驶状态(速度大于0km/h且持续10s以上)的时间。1.3行驶结束时间 endtime of travelling:车辆从行驶状态转变为静止状态(速度等于0原创 2016-09-03 21:10:30 · 3038 阅读 · 0 评论 -
STM32f103——ILI9341
STM32f103 —— ILI9341#ifndef ILI9341_H_#define ILI9341_H_#include "type.h"//====================================TFT ILI9341=====================================#define ILI9341_SPI原创 2017-02-10 09:05:54 · 11445 阅读 · 0 评论 -
STM32F107——W5500网络通信
#ifndef _W5500_QUEUE_H_#define _W5500_QUEUE_H_#include "type.h"#define W5500_FRAME_SIZE 2048#define W5500_RECV_QUEUE_SIZE 20typedef enum{ W5500_FAILURE = 0, W5500_OK = 1,} w原创 2017-04-07 08:35:50 · 4436 阅读 · 0 评论 -
STM32 —— 多路ADC采集
#ifndef _ADC_H_#define _ADC_H_#include "type.h"#include "debug.h"void ADCInit(void);uint16_t ADCGetData(uint8_t channel);uint16_t ADCGetAverage(uint8_t channel, uint8_t times);#ifndef CONFIG原创 2017-04-09 14:14:15 · 6314 阅读 · 4 评论 -
STM32 —— LIN
STM32 —— LIN/* LIN 总线的主要特性有 单主机 多从机概念 基于普通 UART/SCI 接口的低成本硬件实现 低成本软件或作为纯状态机 从机节点不需要石英或陶瓷谐振器可以实现自同步 保证信号传输的延迟时间 低成本的单线设备 速度高达 20kbit/s 总线的通讯由单个主机控制 每个报文帧都用一个分隔信号起始 ,一个同步场和一个标识符场 . ...原创 2018-03-15 17:12:42 · 16590 阅读 · 13 评论 -
STM32开发环境
STM32开发环境宗旨:技术的学习是有限的,分享的精神的无限的。一、MDK安装 MDK 是一个集代码编辑,编译,链接和下载于一体的集成开发环境( KDE )。MDK 这个名字我们可能不熟悉,但说到 KEIL ,学过 51 的朋友就再熟悉不过了。后来 KEIL 被 ARM 公司收购之后就改名为 MDK 了,所以学过 51 的朋友是很快就可以熟悉原创 2016-04-10 14:57:15 · 2982 阅读 · 0 评论 -
STM32——串口通信升级版(队列方式)
#ifndef _USART_QUEUE_H_#define _USART_QUEUE_H_#include "type.h"typedef enum{ USART_QUEUE_EMPTY = 0, USART_QUEUE_FULL = 1, USART_QUEUE_OK = 2,} usart_queue_status_t;#define USART_QUEUE_S原创 2017-04-06 09:40:09 · 9200 阅读 · 3 评论 -
STM32f103 —— timer
#ifndef _TIMER_H_#define _TIMER_H_#include "stm32f10x.h"#include "type.h"// LED定时器,按键定时器,重发定时器#define LED_TIMER TIM1#define LED_TIMER_DIV 7200#define LED_TIMER_PERIOD 2500原创 2017-03-17 11:43:53 · 1818 阅读 · 0 评论 -
STM32f103 —— can通信
#include "stm32f10x_can.h"CanRxMsg CanPeliRxMsgStructure;CanTxMsg CanPeliTxMsgStructure;static void can_nvic_config(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(原创 2017-04-03 13:18:09 · 2397 阅读 · 0 评论 -
STM32f103 —— 内部flash读写
#ifndef _MCU_FLASH_H_#define _MCU_FLASH_H_#include <stdint.h>// STM32f103C8T6 64KB FLASH,20KB RAM,1个扇区1KB,程序起始0x8000000#define FLASH_START_ADDR ((uint32_t)0x8000000)#define FLASH_END_...原创 2017-03-16 14:12:08 · 16589 阅读 · 5 评论 -
STM32——PWM
#define TIMER4_PWM_GRP GPIOB#define TIMER4_PWM_INDEX1 GPIO_Pin_7#define TIMER4_PWM_INDEX2 GPIO_Pin_6#define TIMER4_PWM_LOW(grp, index) GPIO_ResetBits(grp, index)#define TIMER4_PWM_HIGH(原创 2017-04-11 13:47:58 · 1476 阅读 · 0 评论 -
STM32 —— 多路DAC(输出电压和正弦波)
//========================================DAC=========================================#define DA_OUT1_CHANNEL DAC_Channel_1#define DA_OUT1_GRP GPIOA#define DA_OUT1_INDEX GPIO_Pin_4#原创 2017-04-10 10:07:40 · 7709 阅读 · 0 评论 -
GPS NEMA 0183协议
GPS NEMA 0183协议 一、 NMEA0183标准语句(GPS常用语句)$GPGGA例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F字段0:$GPGGA,语句ID,表明该语句为GlobalPositioning System Fix Data(GGA)GPS定位信息字段1原创 2016-09-03 13:45:55 · 1398 阅读 · 0 评论 -
MDK临界区
Keil临界区/*********************************************************************************************************** Function name: __ENTER_CIRTICAL, __EXIT_CIRTICAL** Descriptions:原创 2016-08-29 09:07:52 · 1019 阅读 · 0 评论 -
STM32——按键
STM32——按键宗旨:技术的学习是有限的,分享的精神的无限的。一、GPIO工作模式1、当I/O端口配置为输入时:输出缓冲器被禁止施密特触发输入被激活根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器对输入数据寄存器的读访问可得到I/O状态2、当I/O端口被配置为输原创 2016-04-14 12:38:30 · 2187 阅读 · 2 评论 -
STM32——串口通信
STM32——串口通信宗旨:技术的学习是有限的,分享的精神的无限的。一、异步串口通信协议 STM32 的串口非常强大,它不仅支持最基本的通用串口同步、异步通信,还具有 LIN 总线功能(局域互联网)、IRDA 功能(红外通信)、SmartCard 功能。一般我们利用串口打印调试信息。 二、串口工作过程分析 我们只需要大概了原创 2016-04-15 12:00:24 · 2958 阅读 · 0 评论 -
STM32——库函数开发小结
STM32——库函数开发小结宗旨:技术的学习是有限的,分享的精神的无限的。基本上所有外设都有以下几类寄存器:【CR/DR/SR】(1)控制寄存器 xxx_CR(Control/Configuration Register):这类寄存器是用来配置、控制 相应 外 设 的 工 作 方 式 的 。 如 GPIOx_CRL、GPIOx_CRH, AFIO_EXTICR1~A原创 2016-04-15 12:01:21 · 4078 阅读 · 1 评论 -
STM32——DMA
STM32——DMA宗旨:技术的学习是有限的,分享的精神的无限的。 DMA 是为CPU分担数据转移的工作。因为DMA的存在CPU才被解放出来,它可以在 DMA 转移数据的过程中同时进行数据运算、响应中断,大大提高效率。1、DMA工作分析 数据传输的过程中,不需要内核的全程参与,所以内核可以同时进行数据运算。DMA 方式是点到点的数原创 2016-04-16 08:47:33 · 1544 阅读 · 0 评论 -
STM32——ADC
STM32——ADC宗旨:技术的学习是有限的,分享的精神的无限的。一、ADC指标 有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行 ;ADC的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中 ;模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高 / 低阈值。对于 AD原创 2016-04-17 21:08:50 · 13413 阅读 · 0 评论 -
STM32——I2C
STM32——I2C宗旨:技术的学习是有限的,分享的精神的无限的。一、I2C协议 I 2 C (Inter-Integrated Circuit)协议是由 Philips 公司开发的,由于它具备引脚少、硬件实现简单、可扩展性强、不需要如 USART、CAN 的外部收发设备等特点,现在被广泛地使用在系统内多个集成电路(IC)间的通信。1、物理层(原创 2016-04-18 11:39:27 · 2462 阅读 · 0 评论 -
STM32——EEPROM
STM32——EEPROM宗旨:技术的学习是有限的,分享的精神的无限的。一、I2C接口读写EEPROM(AT24C02) ——主模式,分别用作主发送器和主接收器。通过查询事件的方式来确保正常通信。1、I 2C接口初始化 与其他对GPIO 复用的外设一样,它先调用了用户函数I2C_GPIO_Confi g() 配置好 I 2原创 2016-04-19 10:32:50 · 18591 阅读 · 1 评论 -
STM32——SPI接口
STM32——SPI接口宗旨:技术的学习是有限的,分享的精神的无限的。一、SPI协议【SerialPeripheral Interface】 串行外围设备接口,是一种高速全双工的通信总线。在ADC/LCD等与MCU间通信。1、SPI信号线 SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为SS 、SCK、MOSI、MI原创 2016-04-19 18:27:14 · 34993 阅读 · 7 评论 -
STM32——系统滴答定时器
STM32——系统滴答定时器宗旨:技术的学习是有限的,分享的精神的无限的。一、SysTick【内核中】【风格:先描述一下库对寄存器的封装,再举例实现某些功能】 SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号: 15)。在以前,操作系统还有所有使用了时基的系统,都必须一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时原创 2016-04-13 10:31:27 · 6193 阅读 · 0 评论 -
STM32——流水灯
STM32——流水灯stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,工程模板的建立前面有介绍,这里只讲重点。【stm32f10x_rcc.c用于配置系统时钟 和外设时钟,由于每个外设都要配置时钟,所以它是每个外设都需要用到的库文件。】原创 2016-04-13 09:19:03 · 2226 阅读 · 0 评论 -
STM32——时钟系统
STM32——时钟系统宗旨:技术的学习是有限的,分享的精神的无限的。一、时钟树 普通的MCU,一般只要配置好GPIO 的寄存器,就可以使用了。STM32为了实现低功耗,设计了非常复杂的时钟系统,必须开启外设时钟才能使用外设资源。 左边开始,从时钟源一步步分配 到外设时钟。 从时钟频率来说,又分为高速时钟和低速时钟,原创 2016-04-12 09:01:05 · 2342 阅读 · 0 评论 -
蓝牙模块测试
蓝牙测试宗旨:技术的学习是有限的,分享的精神的无限的。1、发送AT,回复OK,连接成功2、先发送 AT+BTPOWER=1;打开蓝牙功能,回复OK3、发送AT+BTHOST?;查询模块蓝牙地址和名称4、发送AT+BTSCAN=1,20查询周边蓝牙设备,这是“20”是查询等待时间,查询结束返回:+BTSCAN:15、手机点击配对,如果需要验证信息,发送发送原创 2016-04-24 22:46:26 · 5026 阅读 · 3 评论 -
Cortex M3存储器映射
CortexM3存储器系统宗旨:技术的学习是有限的,分享的精神的无限的。CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种 CM3 单片机间的移植。存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括:闪存地址重载及断点单元(FPB),数据观察点单元(DWT),仪器化跟踪宏单元(ITM),嵌入式跟踪宏单元(E原创 2016-04-08 08:51:06 · 4219 阅读 · 1 评论 -
Cortex M3寄存器组
寄存器组宗旨:技术的学习是有限的,分享的精神的无限的。 1、通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。2、通用目的寄存器 R8-R12 R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们,原创 2016-04-08 08:51:55 · 3857 阅读 · 0 评论 -
Cortex M3内核架构
CortexM3内核架构宗旨:技术的学习是有限的,分享的精神的无限的。1、ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU)。 完整的基于CM3的MCU还需要很多其它组件。在芯片制造商得到CM3处理器内核的使用授权后,它们就可以把CM3内核用在自己的硅片设计中,添加存储器,外设, I/O以及其它功能块。不原创 2016-04-09 15:49:48 · 22417 阅读 · 0 评论 -
Cortex-M3工作模式与异常
Cortex-M3工作模式与异常一、工作模式 线程模式和手柄模式。当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。 二、异常和中断Cortex-M3 支持大量异常,包括 16-4-1=11个系统异常,和最多 240 个外部中断——简称 IRQ。具体使用了这原创 2016-04-09 15:51:45 · 4400 阅读 · 5 评论 -
Cortex M3 NVIC与中断控制
Cortex M3 NVIC与中断控制宗旨:技术的学习是有限的,分享的精神的无限的。一、NVIC概览 ——嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。NVIC 共支持 1 至 240 个外部中断输入(通常外原创 2016-04-09 15:53:20 · 7797 阅读 · 0 评论 -
STM32——GPIO(1)
STM32——GPIO【对单片机的操作就是控制IO口】一、GPIO(通用输入输出口)1、选定需要的引脚(对应哪一个IO口);2、配置需要的功能(输入还是输出);3、设置需要的高低电平; 二、GPIO寄存器配置寄存器:输入还是输出数据寄存器:保存输入电平或将要输出电平位控制寄存器:控制电平的输出锁定寄存器:设置某锁定引脚后,不能修改配置原创 2016-04-11 21:55:18 · 3127 阅读 · 0 评论 -
STM32——GPIO(2)
STM32——GPIO宗旨:技术的学习是有限的,分享的精神的无限的。/* GPIO_InitTypeDef结构体 */typedef enum{ GPIO_Speed_10MHz = 1, //枚举常量,值为 1,代表输出速率最高为 10MHz GPIO_Speed_2MHz, //对不赋值的枚举变量,自动加 1,此常量值为 2 GPIO_Sp原创 2016-04-11 21:55:36 · 2855 阅读 · 2 评论