2

回答

求讲解下 大致的方法

8dda87a4473c5205 2020-07-20 阅读:29

3

回答

从程序上是不是可以测出来呢

一笔之名也 2020-07-20 阅读:51

6

回答

上拉电阻与下拉电阻区别

76f714aee3796845 2020-07-19 阅读:72

0

回答

记录下这两天在使用库函数配置UART2时的碰上的问题与一些想法(以下都将针对UART2来讲)。问题始于:配置UART2时,是否需要配置其TX、RX对应引脚(分别为PD5、PD6)的GPIO(即PD5配置为输出,PD6配置为输入)?转念一想,TX与RX分别为PD5与PD6的默认复用功能,想必只要使用复用功能就行了,于是去参考手册(RM0016)中查找,GPIO的DDR、CR1与CR2只能设置输入输出的模式,并不能选择复用功能(如第1张图所示)。但是在GPIO章的11.7.1节复用功能输入(Alternate function input)提到:“Alternate function inputs are not selected automatically you select them by writing to a control bit in the registers of the corresponding peripheral.”,即是说复用功能的输入模式需要在对应外设寄存器的控制位进行操作才能使用;(For Alternate Function input you should select floating or pull-up input configuration in the DDR and CR1 registers. 该节提到的另一句,就是说要将PD5的GPIO配置为floating或者pull-up)而在11.8.1节复用功能输出(Alternate function output)则说:“Alternate function outputs provide a direct path from a peripheral to an output or to an I/O pad taking precedence over the port bit in the data output latch register (Px_ODR) and forcing the Px_DDR corresponding bit to 1.”即是说,复用功能的输出优先级比ODR高,直接强迫DDR设为1。这两节的信息,按我的理解:即是说,要使用外设功能的输入模式,必须要在对应外设寄存器的控制位进行设置才可使能;而输出模式则是当外设使能时,就可以使用外设的输出模式。总之,关键就是要在对应外设寄存器的控制位使能该寄存器。那么看来只需对UART2的使能位进行设置就可以了,查询了UART的寄存器表,UARR_CR1的Bit5为UARTD(UART Disable)与使能相关(如第2张​图所示),并且UARTD=0时,UART enabled。那么只要设置该值为0,就能使用TX与RX了? 如果是这样,那么实际上,我们根本不用做任何操作,UART就已经使能了,因为UARTD复位后的值即为0。故对PD5,我们需要将它的GPIO配置为floating或者pull-up(复位后的默认值为直接满足条件);而PD6则不需要,因为UART使能的时候就已经将其配置为复用功能输出了。想请教一下各位大侠,小弟这样的思维过程是否合理?欢迎交流指正。

KW59 2020-07-19 阅读:96

6

回答
灵动mm32的单片机好用吗? 单片机综合应用

灵动mm32的单片机好用吗?有人踩到什么坑吗?

江湖老李 2020-07-19 阅读:73

7

回答

#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit S1=P3^0;sbit flag=P3^7;//???ж?????????     void delay(uint z){uint xy;for(x = z; x > 0; x--)  for(y = 114; y > 0 ; y--);   }//?ж?????void int1Init(){EA = 1;//?????ж?EX1 = 1;//?????ж?1IT = 1;//???ж?1????????}void int1() interrupt 2{P1=~P1;} void main(){int1Init();while (1){  if(S1==0)  {    delay(20);//????????   if (S1==0)   {    flag=1;    flag=0;   ?? while (S1==0);//??????   }  } } }

91f04b898ce02dca 2020-07-18 阅读:79

5

回答
单片机实现web界面配置 单片机综合应用

想通过单片机做一个转发设备,因为涉及到通信地址等内容配置,想通过网页的这种形式进行配置,该如何实现。

Linux小学童 2020-07-18 阅读:60

7

回答
nxp的单片机都有哪些 单片机综合应用

nxp的单片机都有哪些型号,优势

江湖老李 2020-07-17 阅读:65

2

回答

stc代替pt2272的遥控器组合键怎么设置呀,请求大神帮帮小弟

31e81bfb1eaa86b7 2020-07-15 阅读:65

5

回答

要求:两只开关AB,先按下A再按下B、加计数1,先按下B再按下A,减计数1;系统初值为0,如果在规定时间内没有清零,则报警,提示场馆内有人隐藏。请问具体设计应该怎么考虑呢?

43c928a674faeaa7 2020-07-13 阅读:87

3

回答

lcd多余的信号线怎么接

yhj416606438 2020-07-13 阅读:77

5

回答

单片机IO如何输出模拟信号,看到过一款设计用PIC18F26K20直接IO输出信号到PAM8302A功放,接上喇叭就可以输出人声音的设计,单片机直接模拟人声的原理是什么?

串行soc 2020-07-12 阅读:131

8

回答
qt可以运行在单片机上么 单片机综合应用

qt可以运行在单片机上么

莱克迷KW 2020-07-12 阅读:78

3

回答

STC8A8K64S4A12单片机怎么才能做到掉电后把数据写到EEPROM通过哪些功能实现

fdde8d40664a591d 2020-07-12 阅读:126

3

回答

各位好:/@@*写命令比如光标显示与不显示,需不需要移屏,在液晶什么位置显示        */ void xieml (unsigned char ml)  {        eo=0;          dx=0;           // R/W读写选择。H/L..        sm=0;           //RS 数据/命令选择。H/L.        P0=ml;        Lcd1602_Delay1ms(5);        eo=1;        Lcd1602_Delay1ms(5);        eo=0;  }/@@*写数据比如在液晶显示什么容        */ void xiesj(unsigned char sj)   {        eo=0;    dx=0;           // R/W读写选择。H/L.        sm=1;           //RS 数据/命令选择。H/L.        P0=sj;        Lcd1602_Delay1ms(5);        eo=1;        Lcd1602_Delay1ms(5);        eo=0;                                                          }void chushiha(){     xieml(0X38);   xieml(0X0c);  // xieml(0X06);   xieml(0X01);}void main(){  InitTimer0();  chushiha();  xieml(0X80);  xiesj(0);  Lcd1602_Delay1ms(5);        xieml(0X80+0X03);  xiesj(0X04);  Lcd1602_Delay1ms(5);        while(1);}1206显示的位置对了,但是乱码,,C基础太差了,不知道是哪 里没有定义好,  一行0位置显示0,一行3位置显示4.请教 谢

bcdc0898ed6e41d7 2020-07-12 阅读:66

5

回答

为什么51单片机的定时器有几率卡死? ​这个程序就是四个按键按键控制十个LED灯,LED1LED2LED3LED4是对应定时显示的灯其中两个按键各要控制四个灯,定时那个按键是按三次,分别亮LED2、3、4、对应三种定时时间,按第四次关闭定时器LED1灯。问题是:1.为什定时器正在运行的时,疯狂乱按除了定时按键之外的其他按键,有很大几率会导致定时器卡死,定时灯也就不会自动熄,除非把定时器关掉,重新打开。2.定时器运行的时候,按其他键的频率比较慢,或不按其他按键,这样定时正常,不会卡死。我自学比较菜,看着程序逻辑也是正确的啊,就是找不到BUG在哪里,实在不知道该怎么办了,求帮帮忙。

e35ca33e2fdc9872 2020-07-11 阅读:99

1

回答

我想使用编码器控制数码管值的加减,一直没有反应,望高手指教,非常感谢!#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;          //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit EC11_A=P2^5;sbit EC11_B=P2^6;u8 code smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07                                        0x7f0x6f0x770x7c0x390x5e0x790x71};//显示0~F的值u8 d=125;/@@******************************************************************************** 函 数 名         : delay* 函数功能                   : 延时函数,i=1时,大约延时10us*******************************************************************************/void delay(u16 i){        while(i--);        }/@@******************************************************************************** 函 数 名         : DigDisplay* 函数功能                   : 数码管动态扫描函数,循环扫描8个数码管显示*******************************************************************************/void DigDisplay(){        u8 i;        for(i=0;i<3;i++)        {                switch(i)         //位选,选择点亮的数码管,                {                        case(0):                                LSA=0;LSB=0;LSC=0; P0=smgduan[d%10];delay(100); P0=0x00;  break;//显示第0位                        case(1):                                LSA=1;LSB=0;LSC=0; P0=smgduan[d%100/10];delay(100);P0=0x00; break;//显示第1位                        case(2):                                LSA=0;LSB=1;LSC=0; P0=smgduan[d/100];delay(100);P0=0x00;    break;//显示第2位                }                }}void xuanzhun(){        u8 flag=0left_flag=0right_flag=0;        if((EC11_A)&&(EC11_B))                 {                                flag=1;                }                if(EC11_A!=EC11_B)                {                                left_flag = EC11_A; //记录AB的信号状态                                right_flag = EC11_B;                }                if(flag==1)                {                                if((EC11_A==0)&&(EC11_B==0))                                {                                                flag=0;                                                if(left_flag==0)  //左转                                                {                                                                d--;                                                }                                                if(right_flag==0)                                                {                                                                d++;                                                 }                                }                        }}/@@******************************************************************************** 函 数 名       : main* 函数功能                 : 主函数* 输    入       : 无* 输    出             : 无*******************************************************************************/void main(){                while(1)        {                xuanzhun();                DigDisplay();  //数码管显示函数                }        }

c860c7a3a6f9fde2 2020-07-11 阅读:84

6

回答

IAR中的sizeof是一种运算符吗?是怎么实现的?

牛妞小小 2020-07-10 阅读:86

2

回答

jlink 在usb3.0上无法识别,在2.0上可以使用,为什么 ,不应该是兼容的么,但这个接口可以识别U盘与其他的设备

一笔之名也 2020-07-10 阅读:83

6

回答

sprintf和printf有什么区别,返回值有什么作用?

开心撸代码 2020-07-10 阅读:221
  • 帮助人数
  • 0
  • 获得赞数
  • 0
  • 一周积分
  • 0

每日任务

提问一次
100IC币
回答一次
30IC币

问题达人换一批

本月问答IC币兑换

排名
用户名
问答积分
可兑换IC币
1
938
20000
2
780
20000
3
668
15000
4
656
15000
5
486
10000
6
468
10000
7
372
8000
8
322
8000
9
322
8000
10
210
6000
11
166
4000
12
126
4000
13
120
4000
14
110
4000
15
86
2000
16
76
2000
17
68
2000
18
66
2000
19
66
2000
20
62
2000
21
56
2000
22
52
2000
23
46
1000
24
44
1000
25
38
1000
26
36
1000
27
34
1000
28
30
1000
29
26
0
< 123 >