真棒
那个实时操作 系统是灰常实际用的
103楼
定时器TIM2 查询方式精确定时搞定
为了配合uCOS使用,将SysTick让给了OS。现在没法使用SysTick进行延时了,只能考虑定时器了。
定时器1太过于强大,没舍得用。就定时器2吧。
使用定时器2,精确延时1ms。使用查询方式,中断方式没搞定
定时器初始化:
void Tim2DelayInit(void)
{
TIM_TimeBaseInitTypeDef timInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
timInitStruct.TIM_Period =1; //自动装载
timInitStruct.TIM_Prescaler =72-1; //72M分频率到1000K(1M),以实现微秒级计时
timInitStruct.TIM_ClockDivision =0;
timInitStruct.TIM_CounterMode =TIM_CounterMode_Down; //向下计数
TIM_TimeBaseInit(TIM2,&timInitStruct);
}
//微秒级延时函数
void delay1us(u16 delayTime)
{
u16 TIMCounter = delayTime;
TIM_Cmd(TIM2, ENABLE);
TIM_SetCounter(TIM2, TIMCounter);
while (TIMCounter>1)
{
TIMCounter =TIM_GetCounter(TIM2);
}
TIM_Cmd(TIM2, DISABLE);
}
示波器测试delay1us(500),外加LED1口反转,能产生很精确的1K方波。跟用SysTick产生的延时一个效果,用在18B20完全没问题。
不过这个延时数不能太小了,否则次哦来的波形会受GPIO反转速度影响的。
为了配合uCOS使用,将SysTick让给了OS。现在没法使用SysTick进行延时了,只能考虑定时器了。
定时器1太过于强大,没舍得用。就定时器2吧。
使用定时器2,精确延时1ms。使用查询方式,中断方式没搞定
定时器初始化:
void Tim2DelayInit(void)
{
TIM_TimeBaseInitTypeDef timInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
timInitStruct.TIM_Period =1; //自动装载
timInitStruct.TIM_Prescaler =72-1; //72M分频率到1000K(1M),以实现微秒级计时
timInitStruct.TIM_ClockDivision =0;
timInitStruct.TIM_CounterMode =TIM_CounterMode_Down; //向下计数
TIM_TimeBaseInit(TIM2,&timInitStruct);
}
//微秒级延时函数
void delay1us(u16 delayTime)
{
u16 TIMCounter = delayTime;
TIM_Cmd(TIM2, ENABLE);
TIM_SetCounter(TIM2, TIMCounter);
while (TIMCounter>1)
{
TIMCounter =TIM_GetCounter(TIM2);
}
TIM_Cmd(TIM2, DISABLE);
}
示波器测试delay1us(500),外加LED1口反转,能产生很精确的1K方波。跟用SysTick产生的延时一个效果,用在18B20完全没问题。
不过这个延时数不能太小了,否则次哦来的波形会受GPIO反转速度影响的。
104楼
一整天,uCGUI移植 道路是曲折的前途是光明的。
代码还没整理好
参考这个文章,只能参考 你要真安上边的来,还是有问题的:
http://www.cnblogs.com/codehxh/archive/2011/07/27/2117659.html
有几个地方我改了,学老王先卖个关子。俗话说:自己琢磨出来的东西才是好东西
早上爬起来就弄这个,差不多的时候出现问题搞不定。
晚上唱了几个歌,换换脑子,回来就找到问题了。。嘿嘿 很简单一个问题
代码还没整理好
参考这个文章,只能参考 你要真安上边的来,还是有问题的:
http://www.cnblogs.com/codehxh/archive/2011/07/27/2117659.html
有几个地方我改了,学老王先卖个关子。俗话说:自己琢磨出来的东西才是好东西
早上爬起来就弄这个,差不多的时候出现问题搞不定。
晚上唱了几个歌,换换脑子,回来就找到问题了。。嘿嘿 很简单一个问题
106楼
一天半的时间,移植uCGUI到前天移植好的uCOS上。其中坎坷真是难以言表啊!
我用的是ucgui.com网站下载的3.90的源码版。一天半的时间移植成功。
回想下,其实也不难。只要你C语言功底和编程功底够厉害,不难的。
这两天只移植了,还不知道怎么用。下面是移植心得供拍砖:
1、找参考
我在博客园找到一篇文章,安富莱的人写的。前面讲的挺好的,到了关键点就拉稀了。害得我多条了一下午
2、找文件包含关系
UCGUI里边包含了好多LCD驱动芯片的驱动。在文件LCDConf.h里边,一根据需要自己选择。
#define LCD_CONTROLLER 1375
这个是用来选择LCD驱动芯片的,可以用UCGUI自己带的,如果没有比如我们的SSD1289,只能自己写了。
这个选择也有一个文件依赖关系的,不像安富莱那人说的要包含那个LCDWin.h文件,这个文件是可以改的。不想说怎么依赖了,谁遇到了仔细找找也是一种提高。
3、精简再精简。再出问题在哪里之后再加进去
调试就是要找到最关键的地方,去掉干扰
4、坐的时间长了,要换换脑子。
我昨天是指做不下去了,跟朋友唱歌去了,回来就发现了问题了。。。
一味地靠时间堆是不行的,要换换脑子换换思路。
两个最牛的飞线,证明是我的。高清视频在等老王 压缩视频正在传优库
视频在这里 链接
我用的是ucgui.com网站下载的3.90的源码版。一天半的时间移植成功。
回想下,其实也不难。只要你C语言功底和编程功底够厉害,不难的。
这两天只移植了,还不知道怎么用。下面是移植心得供拍砖:
1、找参考
我在博客园找到一篇文章,安富莱的人写的。前面讲的挺好的,到了关键点就拉稀了。害得我多条了一下午
2、找文件包含关系
UCGUI里边包含了好多LCD驱动芯片的驱动。在文件LCDConf.h里边,一根据需要自己选择。
#define LCD_CONTROLLER 1375
这个是用来选择LCD驱动芯片的,可以用UCGUI自己带的,如果没有比如我们的SSD1289,只能自己写了。
这个选择也有一个文件依赖关系的,不像安富莱那人说的要包含那个LCDWin.h文件,这个文件是可以改的。不想说怎么依赖了,谁遇到了仔细找找也是一种提高。
3、精简再精简。再出问题在哪里之后再加进去
调试就是要找到最关键的地方,去掉干扰
4、坐的时间长了,要换换脑子。
我昨天是指做不下去了,跟朋友唱歌去了,回来就发现了问题了。。。
一味地靠时间堆是不行的,要换换脑子换换思路。
两个最牛的飞线,证明是我的。高清视频在等老王 压缩视频正在传优库
视频在这里 链接
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |