单片机编程思想之消除阻塞

本人写单片机程序也有五六年了,其实在三年前我写的程序里几乎没有delay()了,如果你的程序没有delay那么整个程序执行起来会非常的快。下面我们来分析下平时写单片机程序中所遇到的阻塞,以及解决思路。

在讲之前我们的程序框架是main函数里先初始化,然后while(1),前台程序是各种中断。

阻塞有:

①按键程序判断会用到delay消抖,典型的消抖是5ms。

②动态显示时候显示一位数码管时候也会用到延时5ms左右。

③等待串口发送完成。

④好像就这些比较耗时的了。

解决方法:

①像这样的程序,我们可以在定时中断里面判断按键的状态

②解决方法同上

③串口中断发送估计很多人没有用过,也有很多人觉得没有必要,我想说的是你没有写过大型项目,对实时性要求不高,如果你的程序很大,需要服务的地方很多,那你用阻塞式发送很可能会降低整个程序的实时性了,例如9600波特率发送一个字符1ms时间,如果一次发送50个字符就是相当于执行delay(50);那怎么用中断发送呢?很简单,打开串口\发送中断,第一个字符你程序发送,剩余的在发送中断里面发送即可。

单片机程序优化经验

由于单片机的性能同电脑的性能是天渊之别的,无论从空间资源上、内存资源、工作频率,都是无法与之比较的。PC 机编程基本上不用考虑空间的占用、内存的占用的问题,最终目的就是实现功能就可以了。

浅谈STM32单片机学习---PWM输出

实现功能:采用定时器2的通道2,使PA1输出频率1K,占空比40的PWM波形,用PA8随意延时取反led灯,指示程序运行。

首先熟悉一下定时器的PWM相关部分。看图最明白

浅谈STM32单片机学习---PWM输出

其实PWM就是定时器的一个比较功能而已。

CNT里的值不断++,一旦加到与CCRX寄存器值相等,那么就产生相应的动作。这点和AVR单片机很类似。既然这样,我们要产生需要的PWM信号,就需要设定PWM的频率和PWM的占空比。

首先说频率的确定。由于通用定时器的时钟来源是PCLK1,而我又喜欢用固件库的默认设置,那么定时器的时钟频率就这样来确定了,如下:

AHB(72MHz)→APB1分频器(默认2)→APB1时钟信号(36MHz)→倍频器(*2倍)→通用定时器时钟信号(72MHz)。

这里为什么是这样,在RCC模块学习记录里有详细记载,不多说。

因此图中的CK_PSC就是72MHz了。

意法半导体独立式USB Type-C输电控制器,让设备快速、轻松地升级到Type-C

利用Microchip 单芯片功率监控IC(测量范围0V至32V),降低成本并精简材料清单

利用业内首个16位分辨率的双通道器件提高准确性

CAN总线工程师需要关注的几个问题

导读:CAN总线的设计经常遇到错误定位等问题,但是CAN总线测试工程师主要关注的问题不过是这几个!解决这几个问题,CAN通讯问题80%得以解决。

一、定位干扰原因

【下载】SAMA5D2(版本C)Xplained Ultra评估工具包用户指南

本用户指南介绍了 Microchip SAMA5D2(版本 C)Xplained Ultra 评估工具包(SAMA5D2C-XULT 工具包),并描述了针对在基于 SAMA5D2 Arm® Cortex®-A5 的微处理器(MPU)上运行的应用程序的开发和调试功能。

单片机C程序优化

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一。一般是优化了代码的尺寸,就会带来执行时间的增加;如果优化了程序的执行速度,通常会带来代码增加的副作用。很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。

一、程序结构的优化

1、程序的书写结构

STM32烧录的常用方式

stm32烧录常用的方式一般为ST-LINK(或者J-tag)下载仿真和ISP下载

一、仿真器下载

仿真器分为J-TAG和SWD仿真,SWD仿真只需要4根线(VCC、GND、CLK、DATA)就可以了,传输速率也相当更快,是仿真调试的首选。仿真器的软件设置网上一大堆,这里不再赘述。J-TAG仿真用到的线较多,博主也没记住到底用了几根线,但是通用型强。

二、ISP下载

介绍:MCU在出厂前,在芯片中嵌入了BootLoad程序(用FPGA做的?),作用是将做串口转SPI通信,芯片内部的存储芯片FLASH的接口为SPI,这其实是变相的SPI烧录,只是SPI接口配置不方便,而常用的串口配置很方便,所有通过这个程序转换,就可以用串口烧录程序到内部FLASH中了。

STM32的启动方式:

BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。

BOOT1=0 BOOT0=1 从系统存储器启动,即所说的ISP方式烧录,这种模式启动的程序功能由厂家设置。

BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。

Diodes Incorporated 推出 IoT 应用专属的脱机降压转换器

Diodes Incorporated 最新推出 AL17050,此款通用脱机降压转换器是为低功耗物联网 (IoT) 应用所设计。本产品搭载宽广的 AC 输入电压范围及全方位整合式MOSFET 设计,藉此提供精巧、高效率的解决方案,可为需要严格遵循待机功率限制的低功耗应用产生恒定电压。