OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2310|回复: 4

想做一个计数器,并生成方波

[复制链接]

3

主题

26

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-3-27
在线时间
17 小时
发表于 2018-5-17 12:39:09 | 显示全部楼层 |阅读模式
20金钱
f103的板子,1、某一个引脚有高电位计数一次,制作一个计数器                  2、想做一个方波,引脚有高电位波凸起,没有高电位方波不凸起
也不知我说的你们明白没有,个位看到的请给小弟一个建议最好有一个程序



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11550
金钱
11550
注册时间
2014-4-1
在线时间
1316 小时
发表于 2018-5-17 14:23:14 | 显示全部楼层

GPIO基本实验,学会如何输出高低电平,和如何判断输入电平的高低,可能就已经满足你需求了。

如果频率比较高,就要学习计数器的功能。


回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-5-17 17:16:39 | 显示全部楼层
计数器用外部中断实现,上升沿捕获计数。输出方波用定时器输出PWM波就行。
回复

使用道具 举报

3

主题

26

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-3-27
在线时间
17 小时
 楼主| 发表于 2018-5-17 17:52:07 | 显示全部楼层
HXYDJ 发表于 2018-5-17 17:16
计数器用外部中断实现,上升沿捕获计数。输出方波用定时器输出PWM波就行。

有具体的程序吗
回复

使用道具 举报

3

主题

26

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-3-27
在线时间
17 小时
 楼主| 发表于 2018-5-17 17:57:43 | 显示全部楼层
HXYDJ 发表于 2018-5-17 17:16
计数器用外部中断实现,上升沿捕获计数。输出方波用定时器输出PWM波就行。

/¶¨ê±Æ÷3ÖD¶Ï·tÎñ3ìDò         
void TIM3_CH2_Excnt_Init(u16 arr,u16 psc)
{   
    RCC->APB1ENR|=1<<1;    //TIM3 ????  
    RCC->APB2ENR|=1<<2;        //??PORTA??   

    GPIOA->CRL&=0X0FFFFFFF;      //PA7 ??????   
    GPIOA->CRL|=0X80000000;      //PA7 ??   
    GPIOA->ODR|=1<<7;          //PA7 ??

    TIM3->ARR=arr;    //??????????   
    TIM3->PSC=psc;    //????  

    TIM3->CCMR1|=1<<8;  //CC2S=01  ????? IC2???TI2?
    TIM3->CCMR1|=0<<12;     //IC2F=0000 ??????? ???

    TIM3->CCER|=1<<5;   //CC1P=0   ?????
    TIM3->SMCR|=6<<4;   //????:?????????2(TI2FP2)
    TIM3->SMCR|=7<<0;   //??????1
    TIM3->CR1|=1<<0;    //?????,CEN=1
}


int main(void)
{   
    u32 oldcnt=0;   
    Stm32_Clock_Init(9);     //??????
    uart_init(72,9600);      //??????9600
    delay_init(72);          //?????  
    TIM3_CH2_Excnt_Init(0X0F,0);  //????,???0xffff
    while(1)
    {
        delay_ms(1000);
        if(oldcnt!=TIM3->CNT)
        {
            oldcnt=TIM3->CNT;
            printf("cnt:%d\r\n",oldcnt);
           
                                }  
    }
}
现在这个程序就是反馈回来的数值不准,不知道那块出问题了,
这个只是显示计数值程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 16:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表