理论部分
看上去野火的例程来源于st官方,很多人对这个bsp库甚至stm32的i2c硬件都存在质疑,我在设计实验的时候没有发现软硬件存在什么大问题,程序上的一些小瑕疵是有,但瑕不掩瑜。同时还有人提出说为什么st把一个简单的通信协议写的这么复杂,其实我觉得单纯的通信部分是不复杂的,最难理解的可能在于实现page对齐部分,这部分对于初学者来讲很不友好,另外注释写的也不是很清晰。实际上对于入门来说,整个程序里面只要用到bytewrite这一个函数就够了。但是好处在于给了我们一种page对齐的算法,我认为这个算法本身的价值是大于i2c通信部分的。若以后换成其他只能按照block进行操作的存储器,该算法就派上用场了。嵌入式系统只是一个载体,算法和专业方向才是核心竞争力。
When configuring TIM3 as a PWM generater, CH1-CH4 are PA6, PA7, PB0, PB1.
stm32的中断资源非常多,只要是外设就有中断,设置起来也很复杂,除了必须要事先配置好NVIC外,用到哪个外设还要专门对该外设再做一次初始化配置。广播操式的配置代码在很多教程里都做了说明,大同小异,但同时也都在罗列代码时回避了(有意或无意的)中断源的一些关键性知识,本文旨在结合8051寄存器编程的先修课程知识解释stm32中罕有人涉及的关于中断向量入口的知识点,同时也设计了一个按键中断的实验,相信比同类大路货实验更能反映stm32中断的本质。