蓝桥杯-国赛准备第一天(定计划)

最新进展:

 

 当只使用一块基础板子,为了适配国赛的难度,拉开差距,考题肯定会和省赛大相径庭。目前还没想好会有哪些可能的倾向,不过无外乎三种:

一种是探究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定时器更新事件

STM32 影子寄存器 - 知乎 (zhihu.com)

 

附:模板搭建关键点(基础点)

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跳变瞬间的变化;

 

posted @   charonplus  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示