1、需要在menuconfig使能UART2的功能
2、在rtconfig.h中选择UART2作为控制台的输出,如下图:
3、使用putty作为终端显示,显示效果如下图:
代码如下:
/* 引脚编号,通过查看设备驱动文件drv_gpio.c确定 */
#define LED_PIN_NUM 24 /* PB8 */
#define KEY_PIN_NUM 25 /* PB9 */
rt_uint8_t flag_led = 0; //实现灯的翻转
void led_flash(void) //缺点,防抖未处理,延时可能会影响系统的正常的运行
{
if(flag_led)
{
flag_led = 0;
rt_pin_write(LED_PIN_NUM, PIN_LOW);
}
else
{
flag_led = 1;
rt_pin_write(LED_PIN_NUM, PIN_HIGH);
}
}
static void pin_led_sample(void)
{
/* LED灯引脚为输出模式 */
rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
/* 默认低电平 */
rt_pin_write(LED_PIN_NUM, PIN_LOW);
/* 按键引脚为上拉输入模式 */
rt_pin_mode(KEY_PIN_NUM, PIN_MODE_INPUT_PULLUP);
/* 绑定中断,下降沿模式,回调函数名为led_flash*/
rt_pin_attach_irq(KEY_PIN_NUM, PIN_IRQ_MODE_FALLING, led_flash, RT_NULL);
/* 使能中断 */
rt_pin_irq_enable(KEY_PIN_NUM, PIN_IRQ_ENABLE);
}
利用串口的接收和发送的调转函数。。。
1.定义如下变量和数组:
int k:
mt a[3][3]={9,8,7,6,5,4,3,2,1};
则下列语句的输出结果足( )。
for(k=0;k<3;k++)
printf("%d",a[k][k]);
A) 7 5 3
B) 9 5 1
C) 9 6 3
D) 7 4 1
答案:B
2.下面程序执行后,s1=( ), s2=( )
float b[]={0.5, 1.6, 2.7, 3.8, 4.9, 5, 6.1,6.2, 7.3, 8.4},sl,s2;
int i;
for(i=0,sl=s2=0 ; i<9 ; i++ )
{
if( i%2 )
sl += ( int ) b[i];
if( i%3 )
s2 -= b[i]- (int) b[i];
}
答案:s1=23.0 ,s2=-2.7
正确答案: s1=15.0 ,s2=-2.7
错误原因:忘了判断条件i<9,错判为i<=9。
3.已知int a[][3] = { { 0, 1 }, { 2, 3, 4 }, { 5, 6 }, { 7 } };则a[2][1]
的值是( )
答案:6
4.用直接插入排序方法对下面4个序列进行排序(由小到大),元素比较次数最少的是 ( )
A) 94,32,40,90,80,46,21,69
B) 32,40,21,46,69,94,90,80
C)21,32,46,40,80,69,90,94
D)90,69,80,46,21,32,94,40
答案:感觉是D
答案:C(c的逆序对最少)
5.编程:输入两个正整数m和n,求其最大公约数和最小公倍数
int main()
{
int num1,num2;
int i = 0, j = 0;
scanf("%d %d",&num1,&num2);
//判断输入是否在范围
if((num1<=0) || (num2<=0))
{
printf("输入有误");
return 0;
}
//采用暴力破解的策略
//求最小公倍数
if(num1>num2)
{
i = num1;
}
else
{
i = num2;
}
for(; i>0; i++)
{
if((i%num1 == 0) && (i%num2 == 0))
{
break;
}
}
//求最大公约数
if(num1>num2)
{
j = num2;
}
else
{
j = num1;
}
for( ; j>1; j--)
{
if((num1%j == 0) && (num2%j == 0))
{
break;
}
}
//结果输出
if(i<=0)
{
printf("最小公倍数不存在\n");
}
else
{
printf("最小公倍数是: %d\n",i);
}
if(j<=1)
{
printf("最大公约数不存在\n");
}
else
{
printf("最大公约数是: %d\n",j);
}
return 0;
}
解:最大公约数为两者的公共因子,用辗转相除法求最大公约数,可根据两者相乘再除以最大公约数得到最小公倍数
int main()
{
int num1,num2,x,y,temp;
scanf("%d %d",&num1,&num2);
x=num1>num2?num1:num2;//x保存较大的数
y= num1+num2-x; //y保存较小的数
while(x!=0){
temp=y%x;
y=x;
x=temp;
}
printf("最大公约数:%d\n",y);
printf("最小公倍数:%d\n",num1*num2/y);
}
1.设有一个栈,元素依次进栈的顺序为 A 、 B 、 C 、 D 、 E 。下列 是不可能的出栈序列
A) ABCDE
B) BCDEA
C)EABCD
D)EDCBA
答案:C
2.在一个单链表 HL 中,若要在当前由指针 p 指向的结点后面插入一个由 q 指向的结点,则执行如下 ( ) 语句序列。
A) p=q; p->next=q;
B) p->next=q; q->next=p;
C) p->next=q->next; p=q;
D)q->next=p->next; p->next=q;
答案:D
1.某公司申请到一个C类地址,但要连接到6个子公司,最大的一个子公司有26台电脑,每个子公司在一个网段中,则子网掩码应该设成()
A) 255.255.255.0
B) 255.255.255.128
C)255.255.255.192
D)255.255.255.224
答案:D
2的5次方-1 = 31>26,故掩码尾段为11100000=224
1.单任务系统中两个程序A和B,其中
A程序:CPU:10s -> 设备1:5s -> CPU:5s ->设备2:10s ->CPU:10s;
B程序:设备1:10s-> CPU:10s -> 设备2:5s ->CPU:5s ->设备2:10s;
执行顺序为A->B,那么CPU的利用率是()
A) 30%
B) 40%
C)50%
D)60%
答案:C
1.ADC转换过程不含哪项( )
(A)采样 (B)量化 (C)编码 (D)逆采样
答案:D
2.Context – M3处理器的寄存器r14代表( )
(A)通用寄存器 (B)链接寄存器 (C)程序计数器 (D)程序状态寄存器
答案:B