真棒
那个实时操作 系统是灰常实际用的
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、坐的时间长了,要换换脑子。
我昨天是指做不下去了,跟朋友唱歌去了,回来就发现了问题了。。。
一味地靠时间堆是不行的,要换换脑子换换思路。
两个最牛的飞线,证明是我的。高清视频在等老王 压缩视频正在传优库


视频在这里 链接
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
| 【S32K3XX】LIN 通讯模块使用被打赏¥31元 | |
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
我要赚赏金
