【我的电赛日记(三)】STM32学习笔记与要点总结

STM32学习笔记

这个是我在学习STM32时总结的一些笔记 很多地方可能只有我自己可以看懂 等以后有时间再进行维护 为了防止遗漏还是写成博客记录一下吧:

1. 在.h文件中,为防止头文件内容重复定义,经常会有这样的代码:

#ifndef
#define
......
#endif

2. GPIO只有在设置为输出时才需要设置速度,如:

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz

3. 在延时函数delay.c中设置时钟源的要点:

SysTick_CLKSourceConfig();	//systick时钟源选择
SysTick_Config(uint32_t ticks);  //初始化systick,时钟为HCLK,开启中断

1us 需要9个systick周期 1ms 需要9000个systick周期

4. 抢占优先级>响应优先级(同时发生时决定谁先响应) 优先级最高是0 中断优先级分组:2 2² 2³ … void NVIC_Init()

5. 同步通信:带时钟同步信号传输 (SPI,IIC) 异步通信:不带时钟同步信号(UART通用异步 USART通用同步) F103有3个USART,2个UART

串口号 RXD TXD PCLK2 72M 1 PA10 PA9 PCLK1 2 PA3 PA2 PCLK1 3 PB11 PB10 PCLK1 4 PC11 PC10 PCLK1 5 PD2 PC12

6. XXX_IRQn 中断通道

7. 4个通用定时器:TIM2~TIM5 4个中断 2个高级定时器:TIM1,TIM8 4个中断 有互补输出(多用于PWM电机控制) 2个普通定时器:TIM6~TIM7 无中断 主要用于驱动DAC

4个中断(独立通道CH1~CH4) 功能:(1)输入捕获 (2)输出比较 (3)输出PWM (4)单脉冲输出

Tout(溢出时间)=(ARR+1){(PSC+1)/TCLK } TCLK不做处理时默认72M PSC一般为7199

8. 定时器输出PWM时: crr决定占空比 arr决定频率

9. 输入捕获时的特殊寄存器: TIM5CH1_CAPTURE_STA 0~bit5 记录溢出次数 bit6 捕获到高电平标志位 bit7 捕获完成标志位

10. 三个ADC,各16个外部通道,2个内部通道,频率不能大于14MHZ 11. DAC输出=Vref×(DOR/4095)

12. DMA:外设与储存器无需cpu的通信

13. FLASH: 32个1k字节/页 小 128个1k字节/页 中 256个2k字节/页 大

经验分享 程序员 微信小程序 职场和发展