STM32
fly__chen
勿忘初心,别让写博客失去它该有的意义。
展开
-
理解宏:#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
最近调试程序,发现ST的固件库中到处都是assert_param()函数,便查了一下,做个笔记。assert_param语句的作用?assert_param语句是用于程序开发的时候,调试用的检测语句,帮助程序员始终选择有效的参数。默认是不开启的,可以无视它的存在。但是,当你在调试程序的时候,可以打开这个检测机制,调试完了再关闭。所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3原创 2016-10-25 21:28:32 · 7688 阅读 · 0 评论 -
CAN 示波器分析数据帧
如图: 波特率500Kbps,方波不规整 加了120欧匹配。1 帧起始111101101101 ID111 RTR+IDE+R00111 DLC1101111101111101110111110101111101100111 数据1100111110110101111100011111010000101原创 2017-01-19 10:36:36 · 2201 阅读 · 0 评论 -
CAN总线 远程帧理解和应用
简单的说:如果A需要B节点向你发送数据!A可以用B节点的ID,发送一个remote frame,B收到A ID 的 Remote Frame 之后就发送数据给A!发送的数据就是数据帧!远程帧就像命令,命令相应的节点返回一个数据包.总结:由于CAN总线发送帧时,仲裁方法只依靠帧ID号,当有两个相同ID号的帧同时竞争总线时,总线就无法判别出让哪个设备先发送帧,于是就造成总线冲突。为了总线访问安全,每个发转载 2017-01-16 11:44:48 · 12494 阅读 · 3 评论 -
IAP升级 代码分析
/* 如何理解如下代码? *///跳转到应用程序段//appxaddr:用户代码起始地址.void iap_load_app(u32 appxaddr){ if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法. { jump2app=(iapfun)*(vu32*)(appxaddr+4);原创 2017-01-14 14:00:52 · 532 阅读 · 0 评论 -
IAP & ICP
STM32 的中断向量表的设置主要是用在IAP 程序中,如果是普通的 flash 中只有一个程序,一般不需要设置这个。顾名思义,这个表存放的是中断服务函数的入口地址,当发生中断时,CPU来这个表中查询,以此获取中断函数的入口地址。STM32编程方式: ①在线编程(ICP,In-Circuit Programming): 通过JTAG/SWD协议或者系统加载程序(Bootloader原创 2017-01-10 16:21:32 · 651 阅读 · 0 评论 -
STM32 FLASH操作
1.stm32f10xxx闪存编程参考手册写的很详细。2.主闪存编程:对主闪存编程每次可以写入16位。当FLASH_CR寄存器的PG位为’1’时,在一个闪存地址写入一个半字将启动一次编程;写入任何非半字的数据,FPEC都会产生总线错误。在编程过程中(BSY位为’1’),任何读写闪存的操作都会使CPU暂停,直到此次闪存编程结束。3.4. 写入flash函数代码正点原子例程。 用一个数组u16(半字)原创 2017-01-12 19:41:04 · 6518 阅读 · 0 评论 -
USB
http://blog.csdn.net/yxfabcdefg/article/details/52396126 USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low转载 2016-12-29 11:01:55 · 315 阅读 · 0 评论 -
stm32 设置systick中断抢先式优先级
http://blog.csdn.net/sunjiajiang/article/details/7741715转载 2016-12-29 09:53:19 · 5910 阅读 · 0 评论 -
GPIO定义可参考方法
//端口结构体typedef const struct { GPIO_TypeDef *port; //IO 时钟 uint32_t clk; //IO 端口 uint16_t pin; //IO 引脚 uint8_t state; //IO 输入输出状态 0)输出原创 2016-12-28 09:24:06 · 2074 阅读 · 0 评论 -
单片机IO口模拟SPI四种模式的程序
http://www.rationmcu.com/clang/495.htmlhttp://blog.csdn.net/zyboy2000/article/details/11861329转载 2016-12-23 14:22:34 · 6075 阅读 · 0 评论 -
(学习笔记) SPI通信协议
概念SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种通信接口技术。SPI,是一种高速的,全双工,同步串行通信总线,并且在芯片的管脚上只占用四根线(MISO,MOSI,NSS,SCK)。主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。引脚SPI接口经常被称为4线串行总线,以原创 2016-10-02 16:15:31 · 31967 阅读 · 0 评论 -
定时器输入捕获
//初始化TIM5输入捕获参数 TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01 选择输入端 IC1映射到TI1上 TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获 TIM5_ICInitStructure原创 2016-12-05 21:07:41 · 4167 阅读 · 0 评论 -
定时器比较输出
// 通道对应的引脚模式要设置成:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 因为这个问题弄了三个小时 //初始化TIM3 设置为输出比较模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; // 1 TIM_OCInitStructure.T原创 2016-12-05 18:57:39 · 3671 阅读 · 1 评论 -
STM32的串口采用DMA方式接收数据测试
http://blog.csdn.net/jdh99/article/details/8444474转载 2016-12-17 12:38:38 · 1413 阅读 · 0 评论 -
I2C笔记
I2C总线中文讲解,详尽通俗(一些概念): http://wenku.baidu.com/link?url=n8aVmARYADcKwBAX5-3b9aml3nwPZh7k9R4FzREmGS8isp9UHCsQ47GiS4nZyerr4SwZLA9-4WGqWmuSEbDcx7yplDc39lGO5-8qBI9iPxqi2c 相关知识总结(转): http://blog.csdn.net/hy原创 2016-12-07 14:26:43 · 549 阅读 · 0 评论 -
STM32F4 读写 AT24C512问题
移植正点原子对IC2,驱动程序读数据正确(使用写好的AT24C512测试,说明器件地址没有问题),但无法写入数据,驱动函数中,数据写入的用到的函数,数据读取都用的到,示波器检查IO配置正确(不正确的话,数据读取也不会出错),延时时间正确(排除时钟配置问题);问题陆陆续续扣了两天才找到原因,iic时序问题,iic停止函数中停止建立时间太短,官方数据手册最小时间为0.25us,原子哥的程序停止信号需要改原创 2017-02-22 19:15:00 · 6120 阅读 · 2 评论