蓝桥杯-国赛准备第一天(定计划)
最新进展:
当只使用一块基础板子,为了适配国赛的难度,拉开差距,考题肯定会和省赛大相径庭。目前还没想好会有哪些可能的倾向,不过无外乎三种:
一种是探究G4芯片更有趣、更复杂的功能,另一种是外设的配合使用要求更高(譬如功能更多、精度要求更严格),还有一种是偏算法、逻辑;
因此之后的准备也尽量依循自己心里所想进行。
今天已经是晚上了,就先复习下省赛题目模板的配置,把其中涉及到的已学模块的疑问罗列清楚,逐个解决。
这几天没更,因为这个问题一直困扰我,debug也没发现什么问题,来这里谈谈。
问题描述:
RTC显示的sprintf函数写在ADC显示的sprintf函数之后,会出现不明的显示结果,日期显示没问题,时间显示出现比如88;32这样的结果。debug发现在adc显示函数之后,Time_RTC结构体的值居然会发生变化。
解决:ADC的sprintf函数内部字符长度过长。
思考:sprintf函数的“xxxxx”写入i_disp的地址中,当字符长度过长时,由于不知名的原因,使得下次写入内容时,有内容的错误写入。但是究竟是怎么影响的,很烦,想不通。(有明白人可以评论说下,感谢)
其他有关搭建模板的注意点,如下:
1.pre分频需要+1;
RTC需要+1;
hrtc.Init.AsynchPrediv = 124; hrtc.Init.SynchPrediv = 5999;//*750KHz__RTC_CLK
htim6.Init.Prescaler = 7999;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
htim6.Init.Period = 1000;
2.
ARR寄存器(自动重装载寄存器)和使能Auto_reload的关系和其作用:
这里涉及到一些概念(影子寄存器、更新事件,重复次数),有想详细了解的可以去查阅资料,这里简单归纳:
1、UG:产生更新事件(Update generation),新初始化计数器,并产生一个更新事件。
2、UIF:更新中断标记(Update interrupt flag)位O当产生更新事件时该位由硬件置1’。它由软件清O'。
第一个用来产生计数器更新时间,并清除当前计数器。第二个是中断的产生,可能是由于外部事件、定时器等引起的。
影子寄存器可以看成两个寄存器,一个对用户透明,另一个则不;因此,写入reload寄存器的值不一定立刻起作用,只有移动到不透明的那个才起作用。
从转换速度来看,我觉得是否enable这个位没什么影响。
/**可以参考以下文章继续学习:
(6条消息) STM32定时器中的更新操作与更新事件_xuxg2005的博客-CSDN博客_stm32定时器更新事件
附:模板搭建关键点(基础点)
GPIO:
*C8-C15默认拉高电平关闭LED;
*PD2SET-RESET实现锁存输出一次;
*按键使用三段代码,控制使用switch时要break;
RTC:
*750KHz,使用HSE时钟;
*124,2499分频;
ADC:
*Hal_ADC_start()之后才能Get_Value(),返回一个uint32_t大小的value,但是因为只有低12bit使用,所以使用uint16_t来存value就行;
*Get_ADC()*3.3/4096?4095?个人之前一直使用4096,但是我觉得4095更合理;
*ADC_Calibration_Start()要在ADC没有使用时校准;
USART:
*两个40长度的数组来存发送的数据;
*一个单字符用来接收;
*一个counter来递增数据,结合实现串口的收发;
*Recpltcallback接受中断;
TIM:
*pre=79;Period=6500;
*IC_Capture;OC_Delay;
*htim->instance=Timx;htim->channel=Active_channel;
*Set compare()-》CCR;
*Get Counter()-》CNT;
//__HAL_TIM_GET_COMPARE;这个和get_counter在更新事件发生时读取到的值有差别吗
//__HAL_TIM_SET_AUTORELOAD(&htim3, 9999); //PA6(绿色)的频率为100hz****ARR****period****
//__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, (100*PA6_Duty_Int));//PA6(绿色)的占空比跟随设置****CCR****plus****
探究:
*长短按识别;
*RTC掉电运行;
*设置闹钟;
*Tim波形精准测定;
*value-1——value跳变瞬间的变化;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)