推荐阅读最新更新时间:2024-03-16 15:43
STM32-快速上手SPI
1 概述 基本的部分前文《STM32-SPI》已经介绍过了,这里只记怎么用。 1.1 引脚映射 STM32F103ZET6的三个SPI的引脚分别为 SPI1_SCK PA5(21) SPI1_MISO PA6 (22) SPI1_MOSI PA7 (23) SPI1_NSS PA4(20) SPI2_SCK PB13(34) SPI2_MISO PB14(35) SPI2_MOSI PB15(36) SPI2_NSS PB12(33) SPI3_SCK PB3(55) SPI3_MISO PB4(56) SPI3_MOSI PB5(57) SPI3_NSS PA15(50) 1.2 时钟源 SPI1在APB
[单片机]
KEILv5 STM32 程序在APP与BOOTLOADER共用方法
先将需要共用的程序定义在固定了FLASH地址中: #pragma arm section code= .ARM.__at_0x800F000 void Function(void) { } #pragma arm section 在Bootloader中调用固定地址的程序: ((void (*)(void))0x0800F001)(); **注意:使用的是STM32F105VC,使用的thumb指令集,调用的程序地址最后一位为1,而不是”0x0800F000“ 方法二:(未验证) 将程序的基地址写成表的形式存储在固定位置比如0x8008000 const uint32_t func_table = { (uint32_t)&
[单片机]
stm32单片机oled显示程序 带浮点数显示
单片机源程序如下: // 文 件 名 : OLED // 版 本 号 : 2017521 // 功能描述 :在OLED上显示信息 // 接法说明: // ---------------------------------------------------------------- // OLED接法 // // GND 电源地 // VCC 接5V或3.3v电源 // CLK 接PD9(SCL) // MOSI 接PD7(SDA) // RES 接PD4 // DC 接PD5
[单片机]
嵌入式系统学习——STM32之GPIO
----第一篇:GPIO库 文档说明和约定: 该文档主要是对STM32F4各个模块的库进行翻译和说明。文档中加入了作者的一些理解,建议和小贴士。并且在文档最后,加入了一些使用该库模块的案例。希望大家通过对该文档的阅读,可以更好的使用STM32的库函数进行学习和项目开发。之所以选用1.4.0版本进行翻译和说明,因为该版本群众基础较好,有大量的使用者和相关资料。后续也会推出新版本库和CubeMX库的翻译和说明,希望大家喜欢和支持。如果大家觉得文档有什么问题,麻烦请提出,如果确认问题存在,作者会及时修改。 相关术语说明: gpio:通用输入输出接口 gpio管脚:一个io管脚,这个管脚可以有多个配置。在库函数中用GPIO_Pin_1
[单片机]
ARM-CortexM0/M0+单片机的指针变量替换方法
引言 CortexM0/M0+是RISC类型的低端ARM内核,其指令集与高端ARM兼容,在性能、功耗和价格方面远优于传统的以8051、68S08/12等为代表的8/16位CISC(复杂指令流)CPU。目前,各半导体厂商纷纷以之替代原有的8/16位MCU内核,32位ARM MCU全面替代8/16位MCU已是大势所趋。 CortexM0+将CortexM0的3级流水线简化为2级,并进一步降低功耗、提高性能,这些优点使得CortexM0+成为目前8/16位处理器较好的替代者。不过 替代8/16位MCU的低端ARM往往内存资源非常有限,目前典型的CortexM0/M0+ MCU往往仅有2 KB、4 KB或8 KB,最多16 KB片
[单片机]
STM32的启动堆栈初始化
有几个问题,众多博文中抄来抄去,内容一样,却没有解释清楚 上电初始化堆栈,在进入_main后又说初始化堆栈,有什么不同 堆栈的地址是怎么得出来的 关于这两个问题,先借用一下要标准的启动流程 一般而言,系统上电后第一个执行的是由汇编所编写的启动文件,其主要工作为一下五部分: (1)、初始化堆栈指针SP=_initial_sp (2)、初始化PC指针,令其=Reset_Handler (3)、初始化中断向量表 (4)、配置系统时钟 (5)、调用C库函数_main初始化用户堆栈,从而最终调用main函数进入C的世界 STM32的中断向量表规定每一行必须是SP地址,第二行是复位中断入口地址,上电后,C
[单片机]
stm32外部中断实验
// 上一篇是关于串口通信的,用到GPIO的复用,将GPIO复用为usart串口; // 此处是利用按键进行中断处理,这里配置GPIO模式为输入,因为要接收按键的状态; //GPIO端口有很多,ABCD....但是中断只有22个,其中0~15个中断中断线与IO端口一一对应,需要配置GPIO与中断线的映射关系,(类似于端口复用)这里利用了函数:SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0); // 这里需要注意,使用的外部中断,先打开SYSCFG时钟,不然没法实现GPIO与中断线的映射。 #include stm32f4xx.h void init_led
[单片机]
STM32硬件错误的调试技巧
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。 这说明STM32出现了硬件错误。 硬件错误中断 STM32出现硬件错误可能有以下原因: 数组越界操作; 内存溢出,访问越界; 堆栈溢出,程序跑飞; 中断处理错误; 遇到这种情况,可以通过以下2种方式来定位到出错代码段。 方法1: 在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击STOP停止仿真。 示例 1.2 在Keil菜单栏点击View——Registers Window,在寄存器查看窗口查找R14(LR)的值。 如果R
[单片机]