C语言
CodeCramt
这个作者很懒,什么都没留下…
展开
-
stm32F4单片机计算浮点数的时候偶发性出错的解决方法
发现问题项目开发过程中,中断中要计算几个浮点数,仿真时发现浮点数经常性计算错误:计算结果不可能是负值,但却会计算出负值,而且与真实结果完全没有关联性.当时单片机使用的是STM32F429ZGT6,主频设置为192MHz,运行RTOS,开了十个定时器中断.以及几个外部中断可能的原因因为执行的函数是在中断中,而且这个函数还挺长,两三百行,所以想到是有可能进中断次数太多,导致栈溢出.将栈调大至0x1000即4K,还是不行,遂排查栈的问题.设置的主频过高,导致单片机稳定性降低,因F429推荐主频是180M原创 2020-11-30 14:31:17 · 3624 阅读 · 0 评论 -
单片机实现屏幕界面,多层菜单
单片机实现屏幕界面,多层菜单简介编写环境:Keil μVision 5硬件设备:STM32F103C8T6、Nokia 5110屏幕,EC11旋转编码器本界面控件理论上不限制屏幕、不限制单片机型号(未验证)移植方便代码分析数据结构行元素结构体typedef struct{ uint16_t enterViewIndex;//按下确定键跳转的界面 char * text; //当前行显示的文本 HandlerFunc handler; //显示函数}RowListType原创 2020-05-25 23:35:11 · 6062 阅读 · 4 评论 -
关于C51的data、idata、xdata及code
data若定义变量不标注存储类型,则默认为data型,即存放于内部RAM低128字节中.存放于此处的变量可使用ACC直接读写,故读写速度最快,生成的代码最少idata此类型变量在内部RAM中256字节中,其中前128字节与data型是同一片内存空间,只是读写方式不同(使用Rx寄存器),读写速度比data慢xdata此类型变量存放与外部RAM中,范围0x0000~0xffff,最大64Kb空间(实际可能没有这么多,例如有2kb),使用DPTR访问,速度较慢code此类型变量被当作代码存储于RO原创 2020-05-17 23:54:50 · 1292 阅读 · 0 评论 -
基于MSP430G2553的闹钟
基于MSP430G2553的闹钟硬件部分四位数码管(F3461AH)*238译码器(74LS138)*1MSP430G2553单片机微动按键*1软件实现使用TimerA0进行时间计数,每1000ms进入一次CCR0中断,执行时间逻辑:秒钟变量加到60则清零并将分钟变量加一分钟变量加到60则清零并将小时变量加一,小时变量加到24则清零...原创 2020-03-28 17:46:46 · 1134 阅读 · 7 评论 -
C语言实现动态可变长结构体
C语言实现动态可变长结构体可使用此方法进行变长数据缓存,在FIFO,FILO等数据结构中可以用到#define MEM_BUFF_SIZE(x) (sizeof(Mem_t) + x*sizeof(char))typedef struct tagMem{ int val; char buff[0];}Mem_t;int main(){ Mem_t * myMem; ...原创 2020-03-16 22:07:57 · 2091 阅读 · 0 评论 -
C语言输入一个任意长度的整数,将其逆序输出
题目要求:输入一个任意长度的整数,将其逆序输出在屏幕上。如输入-368,则输出-863,输入560,则输出65【注意如输出时前几个字是数字0,则不输出】#include <stdio.h>#include <stdlib.h>void fun(int num){ char x = 0,flag = 0; if (num < 0) { num = ...原创 2019-03-12 23:13:25 · 16282 阅读 · 3 评论