随笔分类 - 单片机stm32/stm8
摘要:如何分配变量到指定的地址 举例:unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100@tiny unsigned char temp_C
阅读全文
摘要:单片机中也可以用__LINE和__FUNCTION__进行异常信息打印,分别代表当前代码行数和当前代码函数名 printf("line:%d\r\n",__LINE__); printf("function:%s\r\n",__FUNCTION__);
阅读全文
摘要:什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用 需要用到外设的重映射功能时才需要使能AFIO的时钟 外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXTIx外部中断的输入脚之用 举例:重映射USART2 USART2的TX
阅读全文
摘要:STM32 ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ。在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串口传输出最后转换的结果。程序如下:#i nclud
阅读全文
摘要:要修改.lkf 文件。 ST 有个中文文档: 如何基于STM8S系列MCU进行项目开发 页29/34 当“Auto”选择框被勾选时,.lkf文件会自动生成在项目主目录下的 debug/ 和 release/ 目录中。下面以上图所示 io_test Project的 lkf 文件为例,来进一步理解.l
阅读全文
摘要:void hard_fault_lr_pc(U32 *usHardFault) { usStack_R14 = usHardFault[5]; usStack_R15 = usHardFault[6]; BKP_WriteBackupRegister(BKP_DR3, usHardFault[5]>>16); BKP_WriteBackupRegiste...
阅读全文
摘要:ARM程序状态寄存器Program State Register 在ARM模式中, 有16个数据寄存器和1或2个状态寄存器是可以随时访问的.在特权模式 (privileged mode) 下, 对应的特殊组寄存器才可以使用. CPSR 当前程序状态寄存器 (Current Program State
阅读全文
摘要:一、导致异常的原因很多,例如:直接使用未分配空间的指针、栈溢出等一场非法操作便会使程序进入HardFault异常状态。下面介绍怎么找出程序中的异常。 接下来在keil_MDK工程中,编译代码,并debug,之后全速运行,可以看到如下图所示程序进入HardFault异常。 如下所示我们找到SP寄存器,
阅读全文
摘要:一、内存分配: 1.1 申请一块内存大小定义: 1.2 设定SIZE大小内存可申请到的内存块最大个数定义: 1.3 内存数组定义 1.4 内存管理结构体定义 1.5 内存分配设计思想: 我们设置动态内存分配的初衷在于:有些单片机系统内存资源比较少,便显得特别珍贵,因此我们要实现内存的反复利用,好像就
阅读全文
摘要:一、DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量。在硬件系统中,主要由CPU(内核)、外设、内存(SRAM)、总线等结构组成,数据经常要在内存和外设之间,外设和外设之间转移。例如:CPU需要处理从外设采集回来的数据,CPU需要先将数据从ADC外设的寄存器读取到内
阅读全文
摘要:一、stm32的中断和异常 Cortex拥有强大的异常响应系统,它能够打断当前代码执行流程事件分为异常和中断,它们用一个表管理起来,编号为0~15为内核异常,16以上的为外部中断,这个表就是中断向量表。而stm32对这个表重新进行了编排,把编号从-3~6定义为系统异常,编号为负的内核异常不能设置优先
阅读全文
摘要:一、CMSIS标准 ST公司的stm32采用的是cortex-m3内核,内核是整个微处理器的CPU。该内核是ARM公司设计的一种处理器体系架构。内核与外设的关系就像PC上的CPU与硬盘、主板、内存等的关系一样。 基于cortex系列的处理器内核都是一样的,区别在于除内核以外的外设的差异,由于这些差异
阅读全文

浙公网安备 33010602011771号