STM32
cxs0913
天才
展开
-
KEIL5软件——硬件仿真,要想运行时间准确
1、 Debug->Debug,必须要选择SW模式。->Trace,Core:72MHz,Trace Enable勾选。2、 要想运行到断点的时候,定时器停止工作。需要设置DBGMCU_CR寄存器。方法如下:*((volatile unsigned long *)(0xE0042004))=0xXXXXXXXX;...原创 2019-12-02 10:50:17 · 2524 阅读 · 0 评论 -
STM32F1时钟系统
1、SYSCLK、AHB、APB1和APB2的时钟频率是在system_stm32f10x.c文件中设置的。#define SYSCLK_FREQ_72MHz 72000000一、对于系统时钟,默认情况下是在 SystemInit 函数的 SetSysClock()函数中间判断的,而设置是通过宏定义设置的。我们可以看看 SetSysClock()函数体:static void SetS...原创 2019-11-30 09:17:37 · 2839 阅读 · 0 评论 -
printf、fputc、putchar和vsprintf的介绍
1、在stm32中使用printf要重定向fputc函数,本质也是通过串口发出去。例子:printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD IDint fputc(int ch, FILE f){while((USART1->SR&0X40)==0);//循环发送,直到发送完毕USART1->DR = (u8) ch;return...原创 2019-11-30 09:05:10 · 2192 阅读 · 0 评论 -
SPI(串行外围设备接口)
1、SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。2、SPI 接口一般使用 4 条线通信:MISO 主设备数据输入,从设备数据输出。MOSI 主设备数据输出,从设备数据输入。SCLK 时钟信号,由主设备产生。CS 从设备片选信号,由主设备控制。3、从图中可以看出, 主机和从机都有一个串行移位寄存器,主机通过向它的 SPI 串行寄存器写入一个字节来发起一次...原创 2019-11-30 09:03:33 · 978 阅读 · 0 评论 -
大端模式和小端模式
1、大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。简单的说,低数据高地址,低地址高数据。小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地...原创 2019-11-30 08:51:31 · 383 阅读 · 0 评论 -
STM32F0的外部线中断操作
1、F0的外部线中断,GPIO 的模式设置为IN,不需要操作GPIO_PinAFConfig()函数。但是需要开启RCC_APB2Periph_SYSCFG时钟,配置SYSCFG->EXTICR要特别注意,库函数和编程手册都有问题。...原创 2019-11-30 08:47:10 · 573 阅读 · 0 评论 -
STM32中的F0和F1的AF操作方式是不一样的。F0是复用,F1是备用。
1、F1对AFIO的时钟使能的说明。2、根据《STM32中文参考手册_V10》有:①事件控制寄存器(AFIO_EVCR)、②复用重映射和调试I/O 配置寄存器(AFIO_MAPR)、③外部中断配置寄存器1(AFIO_EXTICR1)、④外部中断配置寄存器2(AFIO_EXTICR2)、⑤外部中断配置寄存器3(AFIO_EXTICR3)、⑥外部中断配置寄存器4(AFIO_EXTICR4)。3、...原创 2019-11-30 08:44:53 · 3231 阅读 · 0 评论 -
STM32的PWM输出模式
1、PWM模式1的有效电平的占空比是CCR/ARR,PWM模式2的有效电平的占空比是1-CCR/ARR。2、向上计数和向下计数的区别是决定了,先产生有效电平,还是先产生无效电平。但是有效电平的占空比是不会变的。向上计数和PWM1模式组合先产生有效电平。向下计数和PWM2模式组合也是先产生有效电平。3、#define TIM_OCPolarity_High ((u...原创 2019-11-30 08:28:17 · 1681 阅读 · 0 评论 -
STM32的输入捕获模式
1.2.注意:TIM_Prescaler分频的是CK_CNT,对CK_INT没有影响。3.原创 2019-11-30 08:13:39 · 212 阅读 · 0 评论 -
时钟频率除数的预分频值(prescaler)和时钟分频因子(ClockDivision)有什么区别?
1、prescaler 是用来分频来自APBx的时钟频率,然后提供给定时器,作为定时器的心跳。2、ClockDivision是对于输入的分频,在输入捕获的时候要用到,相当于滤波。3、4、...原创 2019-11-30 08:07:20 · 7575 阅读 · 0 评论 -
NVIC寄存器组中的中断挂起SETPEND与消除CLRPEND,与外部中断挂起寄存器EXTI_PR有何关系?
1、先说结论,STM32的中断控制是分级管理的,CM3内核中的NVIC是顶层,对每个通道都设有1BIT的中断挂起位,但每个通道可能不止一个中断源,比如EXTI5_9_IRQn,对NVIC而言,只算一个通道,但实际包含有5个中断源,因此,下层就必须实现对这多个中断源的独立监控,这就是EXTI->PR中的挂起位了,也就是说EXTI_PR用于区分EXTI5_9_IRQn中的具体哪一个中断源。2、...原创 2019-11-30 08:00:41 · 927 阅读 · 0 评论 -
STM32 GPIO 配置之ODR, BSRR, BRR 详解
1、就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。BSRR和BRR寄存器赋0是无效的,赋1进行置位或者复位。2、举个例子说明如何使用这两个寄存器和所体现的优势。例如GPIOE的16个IO都被设置成输出,而每次操作仅需要改变低8位的数据而保持高8位不变,假设新的8位数据在变量Newdata中。3、库函数方法:GPIO_SetBits(GPIOE, Ne...原创 2019-11-29 21:48:10 · 903 阅读 · 0 评论