#include "TIME.h" //****************************************************************************** //! #define MCLK_IN_HZ 25000000 #define delay_us(x) __delay_cycles((MCLK_IN_HZ/1000000*(x))) #define delay_ms(x) __delay_cycles((MCLK_IN_HZ/1000*(x))) void SystemClock_Init(void) { PMM_setVCore(PMM_CORE_LEVEL_3); //高主频工作需要较高的核心电压 //XT1引脚复用 GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN4); GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P5, GPIO_PIN5); //起振XT1 UCS_turnOnLFXT1(UCS_XT1_DRIVE_3,UCS_XCAP_3); //XT2引脚复用 GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN2); GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P5, GPIO_PIN3); //起振XT2 UCS_turnOnXT2(UCS_XT2_DRIVE_4MHZ_8MHZ); //XT2作为FLL参考时钟,先8分频,再50倍频 4MHz / 8 * 50 = 25MHz UCS_initClockSignal(UCS_FLLREF, UCS_XT2CLK_SELECT, UCS_CLOCK_DIVIDER_8); UCS_initFLLSettle(25000, 50); //XT1作为ACLK时钟源 = 32768Hz UCS_initClockSignal(UCS_ACLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1); //DCOCLK作为MCLK时钟源 = 25MHz UCS_initClockSignal(UCS_MCLK, UCS_DCOCLK_SELECT, UCS_CLOCK_DIVIDER_1); //DCOCLK作为SMCLK时钟源 = 25MHz UCS_initClockSignal(UCS_SMCLK, UCS_DCOCLK_SELECT, UCS_CLOCK_DIVIDER_1); //设置外部时钟源的频率,使得在调用UCS_getMCLK, UCS_getSMCLK 或 UCS_getACLK时可得到正确值 UCS_setExternalClockSource(32768, 4000000); }
时间: 2023-07-23 13:08:58 浏览: 180
根据你提供的代码,我看到你正在初始化系统时钟。你使用了 MSP430F5529 的 UCS 模块来配置内部和外部时钟源。
在 SystemClock_Init 函数中,你设置了主时钟(MCLK)、子系统时钟(SMCLK)和外设时钟(ACLK)。你使用 XT2 作为 FLL 参考时钟,并将其设置为 4MHz 的驱动力度。然后,你通过将 FLLREF 设置为 XT2CLK,将其分频为 8,再乘以 50,以获得 25MHz 的 MCLK。
对于 ACLK,你将其设置为 XT1CLK,这意味着 ACLK 将使用 XT1 振荡器的频率(32768Hz)。
最后,你将 DCOCLK 设置为 MCLK 和 SMCLK 的时钟源,并将其分频系数设置为 1,以获得 25MHz 的时钟频率。
通过这些配置,你应该能够获得所需的时钟频率。如果你遇到任何问题,请提供更多关于你的代码和硬件配置的信息,以便更好地帮助你解决问题。
相关问题
/* Socket head file */ #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h>/*sockaddr_in{}*/ #include<arpa/inet.h> /* Unix standard head file */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include <errno.h>/* strerror(),perror(),errno head file*/ #include <sys/time.h> #include <sys/wait.h> #define MAXBUFF 1024 #define PORT 9999怎么改成windows系统
在Windows系统中,网络编程需要使用Winsock API,因此需要引入`<winsock2.h>`头文件。此外,需要在程序中调用`WSAStartup()`函数和`WSACleanup()`函数来初始化和释放Winsock库。
下面是在Windows系统下进行网络编程的头文件和常量定义示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
#define MAXBUFF 1024
#define PORT 9999
```
其中,`<ws2tcpip.h>`头文件包含了一些网络编程相关的函数和结构体定义。`#pragma comment(lib, "Ws2_32.lib")`语句用于链接Winsock库。
需要注意的是,在Windows系统中,端口号的类型为`unsigned short`,而不是`int`。因此,定义端口号常量时应该使用`USHORT`类型:
```c
#define PORT (USHORT)9999
```
#include <stdio.h> #include <stdlib.h> /*其它说明*/ #include <string.h> /*字符串函数*/ #include <time.h> #define LEN sizeof(STUDENT) typedef struct stu /*定义结构体数组用于缓存数据*/ { char num[6]; //学号 char name[5]; //姓名 int score[3]; //三科成绩 int sum; //总成绩 float average; //平均成绩 int order; //排序 int order1; //排名 struct stu *next; } STUDENT; STUDENT *Init();/*初始化函数*/ int Menu_Select();/*菜单选择函数*/ STUDENT *Create(); /*输入函数*/ void Print(STUDENT *head); /* 显示全部记录函数*/ void Search(STUDENT *head);/*查找记录函数*/ STUDENT *Modify(STUDENT *head);/*修改记录函数*/ STUDENT *Delete(STUDENT *head);/*删除记录函数*/ STUDENT *Sort(STUDENT *head);/*排序函数*/ STUDENT *Insert(STUDENT *head, STUDENT *New); /*插入记录函数*//*TODO: 排序排名 功能描述: 按照降序给链表排序,排序存在order,排名存在order1 参数说明:head-STUDENT型指针 返回值说明:STUDENT型指针 */ STUDENT *Sort(STUDENT *head) { return (head); }补全函数
这个函数似乎没有实现排序排名的功能,我来帮你补充一下:
```
STUDENT *Sort(STUDENT *head)
{
STUDENT *p, *q, *tail;
int len = 0, i, j;
// 获取链表长度
for (p = head; p != NULL; p = p->next) {
len++;
}
// 外层循环控制比较轮数
for (i = 0; i < len - 1; i++) {
tail = head;
p = head->next;
q = p;
// 内层循环进行两两比较
for (j = 0; j < len - i - 1; j++) {
if (p->sum > q->sum) {
// 交换节点数据
if (p == head->next) {
head->next = q;
p->next = q->next;
q->next = p;
tail = q;
q = p->next;
} else {
tail->next = q;
p->next = q->next;
q->next = p;
tail = q;
q = p->next;
}
} else {
tail = p;
p = q;
q = p->next;
}
}
}
// 排名
p = head;
for (i = 1; i <= len; i++) {
p->order = i;
p = p->next;
}
// 排序完成,返回头节点
return head;
}
```
这个函数的实现思路是使用冒泡排序对链表进行排序,同时进行排名。排序的依据是每个节点的 `sum` 字段,也就是总成绩。排完序之后,遍历链表,给每个节点的 `order1` 字段赋上相应的排名即可。
阅读全文