【我的电赛日记(三)】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
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字节/页 大
