嵌入式软件开发
单片机驱动开发与软件开发实现
汽车观察侠
快乐的生活,努力的工作。
展开
-
STM8xx swim comm timeout
STM8仿真出现swimerror[30004]:commtimeout:理解问题:选项字节(Option Byte)写操作之IO复用,选项字节包括芯片硬件特性的配置和存储器的保护信息,这些字节保存在存储器中一个专用的块内。除了ROP(读出保护)字节,每个选项字节必须被保存两次,一个是通常的格式(OPTx)和一个用来备份互补格式的(NOPTx)。选项字节可以通过应用程序在IAP模式下修改,...原创 2018-02-08 11:59:56 · 3348 阅读 · 0 评论 -
STM8S0 TIM1_PWM互补输出
目录:1.定时器1和互补PWM基础2.程序:1、TIM1_CH1_PWM互补+死区2、TIM1_CH2_PWM互补+死区3、TIM1_CH1_PWM+TIM1_CH2_PWM互补+死区3.采用IAR仿真需设置:选择IAR菜单ST-Link,选择Option Bytes,配置如图(见文章末尾)一、定时器1互补PWM基础1.TIM1为高级定时器,定时器是16位计数,有65536种分频,分频系数1-6...原创 2018-02-08 08:35:35 · 8563 阅读 · 2 评论 -
STM8S0 定时器2中断配置
目录:1.程序:定时器2中断配置、高精度延时函数和LED灯初始化2.基础知识:一、程序:#include#include"timer.h"#include"led.h"//unsignedintms_count=0;//毫秒计数//定时器2初始化voidInitTIM2(){TIM2_PSCR=0x00;//1分频,定时器时钟等于系统时钟原创 2018-02-05 16:23:55 · 6176 阅读 · 1 评论 -
嵌入式项目的开发经验
#define BOARD_ADDR (uint16_t)(('0')|('1')<<8)宏定义只能定义常量不可定义变量:#define BOARD_ADDR (BOARD_ID/10+'0')|(BOARD_ID%10+'0')<<8)BOARD_ID为变量,所以不成功Receive_Flag = 1;定义标志位,if()语句常用标志位为1来判断是否进入执行内部...原创 2018-04-09 13:56:06 · 4129 阅读 · 1 评论 -
STM32fxx 按键
第一步:初始化GPIO口(该初始化基于STM32F412单片机开发,该按键程序在其他stm32f单片机上使用只需修改GPIO口初始化) GPIO_InitTypeDef GPIO_InitStruct; AHB1_GRP1_EnableClock(AHB1_GRP1_PERIPH_GPIOB);//时钟初始化 GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_...原创 2018-02-15 10:29:25 · 770 阅读 · 2 评论 -
STM32Fxx 内存管理
目录:1.内存管理的原理2.解析程序3.程序(在stm32系列单片机开发中都可以使用)内容:一:内存管理的原理内存管理,是指软件运行时对计算机内存资源的分配和使用。内存管理的实现方法有很多种,他们其实最终都是要实现 2 个函数:malloc 函数(用于内存申请),free函数( 用于内存释放)本程序实现的是分块式内存管理。原理如下:分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为 n块...原创 2018-02-09 08:58:01 · 1181 阅读 · 0 评论 -
STM32F0xx_USART收发配置
目录:1、串口1与串口2的相同与不同。2、串口配置(1)、GPIO配置(2)、USART配置(3)、NVIC配置3、程序串口中断配置发送一个字节(8位数)发送一个16位数发送8位的数组发送字符串串口1中断服务程序内容:一、串口1与串口2的相同与不同串口时钟不同,GPIO口不同,其他都相同原创 2018-02-06 15:04:03 · 4101 阅读 · 1 评论 -
异常问题-NXP的Flash锁死后无法烧录
针对MKL26Z128VFT4烧录后不能再烧录问题,经过分析,初步结论是Flash被锁了,目前怀疑是NMI管脚影响导致。从电路图来看你们使用了NMI管脚作为通用GPIO,使用NMI引脚作为其他功能外接电路时需要特别注意,NMI引脚所接电路需要常态为高电平状态。NMI管脚比较容易受影响,导致Flash被锁定,但是如果已经下载成功的代码,flash被锁定不会影响代码正常运行。如果将NMI管脚使用为其他功能,需要在flash配置域中配置为禁用NMI功能,然后再将此引脚初始化成其他功能...原创 2020-07-28 10:19:16 · 2683 阅读 · 1 评论 -
C语言(嵌入式)编程规范
文件命名:以模块名+下划线+功能名命名,如app_freeze.c,名字全部小写。原则上一个c文件 对应一个h文件,其中c文件内含函数实现,h文件内含宏定义、类型定义、外部接口声明。一个c文件不宜过大,过大说明实现的功能过多,需考虑重新划分功能,分成几个c文件来实现。 函数命名 外部函数:以模块名+下划线+功能名命名,模块名全部大写,功能名第一个字母大写并以匈牙利命名方式命名,如APP_EcgSetSpeed。原则上函数参数个数不得多于7个。 内部函数:以功能名命名,函数名第一个字母大写并以匈牙利命原创 2020-11-18 20:19:42 · 692 阅读 · 0 评论 -
STM32 LL TIM中断与PWM输出
基本定时器(TIM6/TIM7)功能包括:1.16位自动重新加载上端计数器2.16位可编程的分频器,用于按1和65535之间的任何因子划分(也“在运行中”)计数器时钟频率3.触发DAC的同步电路4.在更新事件上的中断/DMA生成:计数器溢出时基单位包括:(可以用软件读写,在运行中也可以读写数据)•计数器寄存器(TIMx_CNT)//•预压寄存器(TIMx_PSC)//TIM_InitStruct.Prescaler = 0;•自动重新加载寄存器(TIMx_ARR)//TIM_原创 2020-11-26 16:55:12 · 3030 阅读 · 0 评论 -
复杂按键操作
1、初始化IO口与按键//按键初始化函数void KEY_Init(void) //IO初始化{ Key_Init KeyInit[KEY_NUM]= { {GPIO_Mode_IPU, GPIOB, GPIO_Pin_1, RCC_APB2Periph_GPIOB}, // 初始化旋转编码器SW-PB1 }; Creat_Key(KeyInit); // 调用按键初始化函数}static BitAction KEY_ReadPin(Key_Init Key) //按键读取原创 2021-01-01 10:33:58 · 738 阅读 · 0 评论 -
USART配置 STM32cubemx配置USART
目录:1.软件2.程序3.使用STM32CubxMX配置USART4,.介绍程序的实现一、软件:(1)STM32CubeMX(2)KEIL5硬件平台主IC:STM32F412RET6二,见程序:main.c部分程序#include "main.h"#include "stm32f4xx_hal.h"#include "usart.h"#include "gpio.h"#define ...原创 2018-06-27 21:08:19 · 15405 阅读 · 1 评论 -
STM32 HAL ADC多通道采集
ADC_HandleTypeDef hadc1;/* ADC1 init function */void MX_ADC1_Init(void){ ADC_ChannelConfTypeDef sConfig = {0}; /** Common config */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; hadc1.Init.Resolution = ADC_RESOL.原创 2020-11-18 20:04:27 · 4049 阅读 · 2 评论 -
STM32 LL DAC
基于STM32L4的LL库DAC输出:通过两面两个函数开启DAC并设置输出值。LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_1);//启动DAC选择的通道LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, 0);//在数据保存寄存器中设置要加载的数据void MX_DAC1_Init(void){ LL_DAC_InitTypeDef DAC_InitStruct = {0}; LL_GPIO原创 2020-11-18 20:10:46 · 1433 阅读 · 0 评论 -
STM32 LL库 硬件IIC从机中断收发通信
1、IC内部硬件原理I2C由一个独立的时钟源计时,它允许I2C从PCLK频率独立地操作。主从机模式只需要配置I2C_SDA和I2C_SCL和打开I2C APB clock(i2c_pclk)时钟;2、初始化3、通讯波形Acknowledge(ACK)能软件启用或禁用。I2C接口的地址可以通过软件选择。例如:I2C_InitStruct.OwnAddress1 = 0xA8;//接收地址I2C_InitStruct.TypeAcknowledge = LL_I2C_AC..原创 2020-11-24 14:23:21 · 4953 阅读 · 1 评论 -
stm32时钟配置 STM32CubeMX配置时钟
一、在时钟配置过程中需结合实际情况配置外部晶振,教程配置外部晶振。如果没有外部晶振则不用选择,导出时会自动生成内部时钟程序。所对应的IO口也可以设置为普通IO口使用。...原创 2018-06-26 18:39:17 · 21517 阅读 · 1 评论