有没有叼大的知道,多少属强的支点,伤害可以超过小米

C#中,怎么将一个窗体中已经改变的全局变量同步到另一个窗体中,将其赋值给局部变量在全局变量定义的窗体中我定义了GlobalVariable.dianshu2和GlobalVariable.chishu
C#中,怎么将一个窗体中已经改变的全局变量同步到另一个窗体中,将其赋值给局部变量
在全局变量定义的窗体中我定义了GlobalVariable.dianshu2和GlobalVariable.chishu2变量,然后在A窗体中给这两个全局变量都赋了值,在B窗体的一开始写了
static int dianshu= GlobalVariable.dianshu2;
static int chishu= GlobalVariable.chishu2;
double[,] m_X_ChiXiangCeLiangWeiZhi = new double[chishu,dianshu];
double[,] m_X_ChiXiangXiangDuiWeiZhi = new double[chishu,dianshu];
我用了断点查找错误,发现GlobalVariable.dianshu2=4和GlobalVariable.chishu2=5; 但为什么它们的值是0呢
B当中没有必要再用static修饰了。比如:
class Program
static void Main(string[] args)
A a = new A();
B b = new B();
Console.Read();
public static int V1 = 99;
public A()
G.V1 +=10;
public B()
Console.WriteLine(G.V1);
打印的结果也是109啊。
【云栖快讯】如何应聘互联网公司,拿到高薪Offer?职场菜鸟如何快速成长?阿里学长为你支招,在线直播,足不出户看秘诀,IT新兵快来吧!&&
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...C语言const:禁止修改变量的值_C语言中文网
&&/&&&&/&&&&/&&
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定:
const int MaxNum = 100;
//班级的最大人数
这样 MaxNum 的值就不能被修改了,任何对 MaxNum 赋值的行为都将引发错误:
MaxNum = 90;
//错误,试图向 const 变量写入数据
我们经常将 const 变量称为常量(Constant)。创建常量的格式通常为:
const 和 type 都是用来修饰变量的,它们的位置可以互换,也就是将 type 放在 const 前面:
但我们通常采用第一种方式,不采用第二种方式。另外建议将常量名的首字母大写,以提醒程序员这是个常量。
由于常量一旦被创建后其值就不能再改变,所以常量必须在定义的同时赋值(初始化),后面的任何赋值行为都将引发错误。一如既往,初始化常量可以使用任意形式的表达式,如下所示:
#include &stdio.h&
int getNum(){
return 100;
int main(){
int n = 90;
const int MaxNum1 = getNum();
//运行时初始化
const int MaxNum2 =
//运行时初始化
const int MaxNum3 = 80;
//编译时初始化
printf(&%d, %d, %d\n&, MaxNum1, MaxNum2, MaxNum3);
运行结果:
100, 90, 80
const 和指针
const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。const 和指针一起使用会有几种不同的顺序,如下所示:
const int *p1;
int const *p2;
int * const p3;
在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。
当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:
const int * const p4;
int const * const p5;
const 和指针结合的写法多少有点让初学者摸不着头脑,大家可以这样来记忆:const 离变量名近就是用来修饰指针变量的,离变量名远就是用来修饰指针指向的数据,如果近的和远的都有,那么就同时修饰指针变量以及它指向的数据。
const 和函数形参
在C语言中,单独定义 const 变量没有明显的优势,完全可以使用#define命令代替。const 通常用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制。
在C语言标准库中,有很多函数的形参都被 const 限制了,下面是部分函数的原型:
size_t strlen ( const char * str );
int strcmp ( const char * str1, const char * str2 );
char * strcat ( char * destination, const char * source );
char * strcpy ( char * destination, const char * source );
int system (const char* command);
int puts ( const char * str );
int printf ( const char * format, ... );
我们自己在定义函数时也可以使用 const 对形参加以限制,例如查找字符串中某个字符出现的次数:
#include &stdio.h&
size_t strnchr(const char *str, char ch){
int i, n = 0, len = strlen(str);
for(i=0; i& i++){
if(str[i] == ch){
int main(){
char *str = &http://c.biancheng.net&;
char ch = 't';
int n = strnchr(str, ch);
printf(&%d\n&, n);
运行结果:
根据 strnchr() 的功能可以推断,函数内部要对字符串 str 进行遍历,不应该有修改的动作,用 const 加以限制,不但可以防止由于程序员误操作引起的字符串修改,还可以给用户一个提示,函数不会修改你提供的字符串,请你放心。
const 和非 const 类型转换
当一个指针变量 str1 被 const 限制时,并且类似const char *str1这种形式,说明指针指向的数据不能被修改;如果将 str1 赋值给另外一个未被 const 修饰的指针变量 str2,就有可能发生危险。因为通过 str1 不能修改数据,而赋值后通过 str2 能够修改数据了,意义发生了转变,所以编译器不提倡这种行为,会给出错误或警告。
也就是说,const char *和char *是不同的类型,不能将const char *类型的数据赋值给char *类型的变量。但反过来是可以的,编译器允许将char *类型的数据赋值给const char *类型的变量。
这种限制很容易理解,char *指向的数据有读取和写入权限,而const char *指向的数据只有读取权限,降低数据的权限不会带来任何问题,但提升数据的权限就有可能发生危险。
C语言标准库中很多函数的参数都被 const 限制了,但我们在以前的编码过程中并没有注意这个问题,经常将非 const 类型的数据传递给 const 类型的形参,这样做从未引发任何副作用,原因就是上面讲到的,将 const 类型转换为非 const 类型是允许的。
下面是一个将 const 类型赋值给非 const 类型的例子:
#include &stdio.h&
void func(char *str){ }
int main(){
const char *str1 = &c.biancheng.net&;
char *str2 = str1;
func(str1);
第7、8行代码分别通过赋值、传参(传参的本质也是赋值)将 const 类型的数据交给了非 const 类型的变量,编译器不会容忍这种行为,会给出警告,甚至直接报错。
10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.1121ic官方微信-->
后使用快捷导航没有帐号?
查看: 13168|回复: 21
c语言中定义的全局变量,在某个函数中赋值还能被其他函数使用吗?
&&已结帖(20)
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
为了省下参数传递的麻烦,我把一些多个函数都要用到的变量和结构体都定义成全局的,可以吗?为什么我的程序执行时出现问题,查看修改后的全局变量值没有改变,还是初始值 呢?请各位高手指点。我在一个函数中对全局变量自加运算,再到另一个函数中全局变量值是开始的初值还是上一个函数自加后的值呢?
满意回复+5
全局变量, 当然是可以的.
不过, 我们写程序, 不建议大量使用全局变量.
"我在一个函数中对全局变量自加运算,再到另一个函数中全局变量值是开始的初值还是上一个 ...
2、是不是定义了一个常量;
当然是可以用的了 而且比较方便
如果你没带系统的话
就看使用这个全局变量的先后顺序了
全局变量,当然是最后使用该变量过后的值了 也就是自加过后的值
大量使用全局函数
最终程序的改动就是牵一发动全身
不建议使用过多全局函数
模块化的思想倒是不错的思想
可以借鉴一下
你在main.c里面定义全局变量
在其他文件中想用的话
还有 你确定 执行过m=m+1;那句了吗 ...
全局变量,要放在程序开头位置。如果其它文件要用,要声明外部变量。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
当然是可以用的了 而且比较方便&&
如果你没带系统的话&&就看使用这个全局变量的先后顺序了&&全局变量,当然是最后使用该变量过后的值了 也就是自加过后的值
如果带系统的话&&就得保护这个共享资源了&&
你可以贴上代码
己所不欲,勿施于人,争渡争渡
主题帖子积分
中级工程师, 积分 4229, 距离下一级还需 771 积分
中级工程师, 积分 4229, 距离下一级还需 771 积分
主题帖子积分
专家等级:结帖率:60%
主题帖子积分
中级工程师, 积分 4229, 距离下一级还需 771 积分
中级工程师, 积分 4229, 距离下一级还需 771 积分
全局变量,要放在程序开头位置。如果其它文件要用,要声明外部变量。
E精灵淘宝店&&
全系列STM32开发板 、电机评估套件 、实验箱
博客:.cn/u/
主题帖子积分
---------------------
主题帖子积分
---------------------
专家等级:结帖率:98%打赏:0.00受赏:43.00
主题帖子积分
---------------------
全局变量, 当然是可以的.
不过, 我们写程序, 不建议大量使用全局变量.
&我在一个函数中对全局变量自加运算,再到另一个函数中全局变量值是开始的初值还是上一个函数自加后的值呢?&&&当然是后者. 这里可能有个概念问题. 假如以变量传递给函数了. 那么修改的是个传递过来的副本, 而不是本身. 除非传递全局变量的地址.
欢迎进入 !
主题帖子积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
大量使用全局函数& &最终程序的改动就是牵一发动全身& & 不建议使用过多全局函数& & 模块化的思想倒是不错的思想& &楼主& &可以借鉴一下
微软CEO史蒂夫·鲍尔默:不要激情,要有韧性
电子设计的灵魂是知识,坚持做技术,共勉
主题帖子积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
资深工程师, 积分 16330, 距离下一级还需 3670 积分
多看看关于编程思想的书籍& &我也是班门弄斧& & 飘过&&
微软CEO史蒂夫·鲍尔默:不要激情,要有韧性
电子设计的灵魂是知识,坚持做技术,共勉
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
杨爱林林 发表于
当然是可以用的了 而且比较方便&&
如果你没带系统的话&&就看使用这个全局变量的先后顺序了&&全局变量,当然 ...
我在做小的毕业设计,没带系统。。并且只有设了一个全局变量,在main。c的开头设置的。。后面的函数要用到该变量的话要怎么应用呢。。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
uet_cache 发表于
全局变量,要放在程序开头位置。如果其它文件要用,要声明外部变量。
只是在该文件中使用,
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
airwill 发表于
全局变量, 当然是可以的.
不过, 我们写程序, 不建议大量使用全局变量.
&我在一个函数中对全局变量自加运算 ...
我想了想可以把所有的子函数都放进main中可以用设全局变量了。。但那样字话,程序就不够好看了。。所以我还是想把子函数放到外面,main中调用。。但全局变量我用不好呢。。在子函数中引用全局变量的话,要做舍呢么特别的说明吗。。代码我一会贴上去。我想实现的就是一个简单的一个按键可以先设定下圈数,按下另外的按键就可以左转或右转相应的圈数
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
/* Includes ------------------------------------------------------------------*/
#include &stm32f10x.h&
#include &stm32_eval.h&
#include &stdio.h&
//#include &ARMJISHU_TouchScreen_ADS7843.h&
#include &sys.h&& & & & & & & &
void USART_Configuration(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);
void Delay(vu32 nCount);
void Delay1(vu32 nCount);
u8 M=0;
/* Values magic to the Board keys */
#define&&NOKEY&&0
#define&&KEY1& &1
#define&&KEY2& &2
#define&&KEY3& &3
#define&&KEY4& &4
#define&&KEY5& &5& & & && &&&
#define&&KEY6& &6& & & && &&&
/*按键相关定义*/
#define RCC_KEY1& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY1_PORT& && && && && && && && && && &GPIOB& &
#define GPIO_KEY1& && && && && && && && && && && &&&GPIO_Pin_0
#define RCC_KEY2& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY2_PORT& && && && && && && && && && &GPIOB
#define GPIO_KEY2& && && && && && && && && && && &&&GPIO_Pin_1
#define RCC_KEY3& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY3_PORT& && && && && && && && && && &GPIOB
#define GPIO_KEY3& && && && && && && && && && && &&&GPIO_Pin_2
#define RCC_KEY4& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY4_PORT& && && && && && && && && && &GPIOB
#define GPIO_KEY4& && && && && && && && && && && &&&GPIO_Pin_5
#define RCC_KEY5& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY5_PORT& && && && && && && && && && &GPIOB
#define GPIO_KEY5& && && && && && && && && && && &&&GPIO_Pin_6
#define RCC_KEY6& && && && && && && && && && && && &RCC_APB2Periph_GPIOB
#define GPIO_KEY6_PORT& && && && && && && && && && &GPIOB
#define GPIO_KEY6& && && && && && && && && && && &&&GPIO_Pin_7
/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker-&Libraries-&Small printf
& && && && && && && && && && && && && && && &set to 'Yes') calls __io_putchar() */
&&#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
&&#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
&&
/*static void Delay_ARMJISHU(__IO uint32_t nCount)
{
&&for (; nCount != 0; nCount--)
&&{
& && &if(GPIO_ADS7843_INT_VALID)
& && &{
& && &&&ARMJISHU_TouchScreen_ADS7843();
& && &}& & & &
&&}
}& & & & & & & & & & & & & & & & & & & & & & & && & */
void delay(void)
&&{
& && &
& && &for(ik=0;ik&0x03af8;ik++) ;
&&}
void delay1(void)
&&{
& && &
& && &for(ik=0;ik&0x00af8;ik++) ;
&&}
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name&&: GPIO_KEY_Config.
* Description& & : Configures the Extension Button.
* Input& && && & : None.
* Output& && && &: None.
* Return& && && &: None.
*******************************************************************************/
void GPIO_KEY_Config(void)
{
&&GPIO_InitTypeDef GPIO_InitS
&&/* Configure KEY1 Button */
&&RCC_APB2PeriphClockCmd(RCC_KEY1, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY1;
&&GPIO_Init(GPIO_KEY1_PORT, &GPIO_InitStructure);
& & /* Configure KEY2 Button */
&&RCC_APB2PeriphClockCmd(RCC_KEY2, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY2;
&&GPIO_Init(GPIO_KEY2_PORT, &GPIO_InitStructure);
& && &/* Configure KEY3 Button */
&&RCC_APB2PeriphClockCmd(RCC_KEY3, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY3;
&&GPIO_Init(GPIO_KEY3_PORT, &GPIO_InitStructure);
& && &&&/* Configure KEY4 Button */
&&RCC_APB2PeriphClockCmd(RCC_KEY4, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY4;
&&GPIO_Init(GPIO_KEY4_PORT, &GPIO_InitStructure);
& && &&&/* Configure KEY5 Button */
&&RCC_APB2PeriphClockCmd(RCC_KEY5, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY5;
&&GPIO_Init(GPIO_KEY5_PORT, &GPIO_InitStructure);
& & & & /* Configure KEY6 Button */
& &RCC_APB2PeriphClockCmd(RCC_KEY6, ENABLE);
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
&&GPIO_InitStructure.GPIO_Pin = GPIO_KEY6;
&&GPIO_Init(GPIO_KEY6_PORT, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name&&: ReadKey
* Description& & : Reads key from demoboard.
* Input& && && & : None
* Output& && && &: None
* Return& && && &: Return RIGHT, LEFT, SEL, UP, DOWN or NOKEY
*******************************************************************************/
u8 ReadKeyDown(void)
{
&&/* 1 key is pressed */
&&if(!GPIO_ReadInputDataBit(GPIO_KEY1_PORT, GPIO_KEY1))
&&{
& & return KEY1;
&&}& & & &
& & /* 2 key is pressed */
else if(!GPIO_ReadInputDataBit(GPIO_KEY2_PORT, GPIO_KEY2))
&&{
& & return KEY2;
&&}
& &/* 3 key is pressed */
else if(!GPIO_ReadInputDataBit(GPIO_KEY3_PORT, GPIO_KEY3))
&&{
& & return KEY3;
& &/* 4 key is pressed */
else if(!GPIO_ReadInputDataBit(GPIO_KEY4_PORT, GPIO_KEY4))
&&{
& & return KEY4;
&&}& & & & & & & && &
& & /* 5 key is pressed */
else if(!GPIO_ReadInputDataBit(GPIO_KEY5_PORT, GPIO_KEY5))
&&{
& & return KEY5;
&&}
& &/* 6 key is pressed */
else if(!GPIO_ReadInputDataBit(GPIO_KEY6_PORT, GPIO_KEY6))
&&{
& & return KEY6;
&&}&&
&&/* No key is pressed */
&&else
&&{
& & return NOKEY;
&&}
}
void motor_Turn_on_1(void)& & & & & & & &&&//正转
{
& && && && && && && && && && &GPIO_Write(GPIOA, 0x08);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x0C);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x04);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x06);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x02);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x03);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x01);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && & GPIO_Write(GPIOA, 0x09);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
}
void motor_Turn_on_2(void)& & & & & & & &&&//反转
{
& && && && && && && && && && &GPIO_Write(GPIOA,0x09);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA,0x01);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA,0x03);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x02);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x06);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & && & GPIO_Write(GPIOA, 0x04);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && & GPIO_Write(GPIOA, 0x0C);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && & GPIO_Write(GPIOA, 0x08);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();& & & &
void motor_Turn_on_3(void)& & & & & & & & //& & & &&&正转一圈
{
&&u8
&&u8
&&u8 N=64;
&&for(r=0;r&N*M;r++)
&&{
&&for(j=0;j&8;j++)& && && && && &&&//电机外轴旋转一周,不是里里面面所看到的一周
&&{
& && && && && && && && && && &GPIO_Write(GPIOA, 0x08);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x0C);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x04);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & && && & GPIO_Write(GPIOA,0x06);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x02);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x03);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x01);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
& & & & & & & & & & & & & & & & & & & & & & & & & & & && &GPIO_Write(GPIOA, 0x09);
& & & & & & & & & & & & & & & & & & & & & & & && && & delay();
&&}
}
M=0;
}
void motor_Turn_on_4(void)& & & & & & & & //& & & &&&反转一圈
{
&&u8
&&u8
&&u8 N=64;
&&
&&for(r=0;r&N*M;r++)
&&{
& &
&&for(j=0;j&8;j++)& && && && && &&&//电机外轴旋转一周,不是里里面面所看到的一周
&&{
& & GPIO_Write(GPIOA,0x09);
& & & & delay();
& & & & GPIO_Write(GPIOA,0x01);
& & & & delay();
& & & & GPIO_Write(GPIOA,0x03);
& & & & delay();
& & & & GPIO_Write(GPIOA,0x02);
& & & & delay();
& & GPIO_Write(GPIOA, 0x06);
& & & & delay();& & & &
& & & & GPIO_Write(GPIOA, 0x04);
& & & & delay();
& & & & GPIO_Write(GPIOA, 0x0C);
& & & & delay();
& & & & GPIO_Write(GPIOA, 0x08);
& & & & delay();& & & &
&&}
}
M=0;
}
& &void num1(void)& & & & & & & &
}
/*void num2(void)& & & & & & & &
}
&&M=M-1;
}& & & && &*/
void motor_ccw00(u8 key)
&&{
& &
& & & & /* Turn Off Select LED */
& & switch(key)
& & {
& && && & case 0:
& & & & & & & &&&
& && && & motor_Turn_on_1();& &//反转
& && && &
& && &&&case 1:
& & & & & & & &&&
& && && & motor_Turn_on_2();& & & &&&//正转
& && && &
& && &&&case 2:& & & & & & & & & & & & & & & & & & & & //反转n圈
& & & & & & & &&&
& && && & motor_Turn_on_3();
& && && &
& && &&&case 3:
& & & & & & & &
& && && &motor_Turn_on_4();& & & & & & & & //正转n圈
& && && &
& && & case 4:
& & & & & & & &&&num1();
& & & & & & & &&&& & & & & & & &
& & & & /*& & & &&&case 5:
& & & & & & & &&&num2();
& & & & & & & && &motor_Turn_on_4();& & & & & & & &
& && && & & & & & & & & & & & & && & */
& && &&&default:
& && && & GPIO_ResetBits(GPIOA, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
& && && &
& & }
}& &
int main(void)
{& & & & & & & & & & & &
//& & & & int m=2, n=1;
& & u8 KeyNum = 0;
& & & & #ifdef DEBUG
& & & & debug();
& & #endif& & & &
& & & & USART_Configuration();& & & &&&//必须放在前面
& & & & RCC_Configuration();
& & & & GPIO_Configuration();
& & GPIO_KEY_Config();
//& & & & ADS7843_Init();& & & &
& & while (1)
& &{
& &&&& & & && & KeyNum=ReadKeyDown();
& & & & & & & && & motor_ccw00(KeyNum-1);
& &&&& & & &
& & }& & & &&&
}
void USART_Configuration(void)
{
& &&&USART_InitTypeDef USART_InitS
& &&&USART_InitStructure.USART_BaudRate = 115200;
& & & &&&USART_InitStructure.USART_WordLength = USART_WordLength_8b;
& & & &&&USART_InitStructure.USART_StopBits = USART_StopBits_1;
& & & &&&USART_InitStructure.USART_Parity = USART_Parity_No;
& & & &&&USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N
& & & &&&USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;& & & &
& & & &&&STM_EVAL_COMInit(COM1, &USART_InitStructure);
}& & & && &
void RCC_Configuration()
{
& & & &&&//定义错误状态变量
& & & &&&ErrorStatus HSEStartUpS
& & & &
& & & &&&//将RCC寄存器重新设置为默认值
& & & &&&RCC_DeInit();
& & & &&&//打开外部高速时钟晶振
& & & &&&RCC_HSEConfig(RCC_HSE_ON);
& & & &&&//等待外部高速时钟晶振工作
& & & &&&HSEStartUpStatus = RCC_WaitForHSEStartUp();
& & & &&&if(HSEStartUpStatus == SUCCESS)
& & & &&&{
& & & & & & & &&&//设置AHB时钟(HCLK)为系统时钟
& & & & & & & &&&RCC_HCLKConfig(RCC_SYSCLK_Div1);
& & & & & & & &&&//设置高速AHB时钟(APB2)为HCLK时钟
& & & & & & & &&&RCC_PCLK2Config(RCC_HCLK_Div1);
& & & & & & & &&&//设置低速AHB时钟(APB1)为HCLK的2分频
& & & & & & & &&&RCC_PCLK1Config(RCC_HCLK_Div2);
& & & & & & & &
& & & & & & & &&&//设置FLASH代码延时
& & & & & & & &&&FLASH_SetLatency(FLASH_Latency_2);
& & & & & & & &&&//使能预取指缓存
& & & & & & & &&&FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
& & & & & & & &&&//设置PLL时钟,为HSE的9倍频 8MHz * 9 = 72MHz
& & & & & & & &&&RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
& & & &&&& & & &&&//使能PLL
& & & & & & & &&&RCC_PLLCmd(ENABLE);
& & & & & & & &&&//等待PLL准备就绪
& & & & & & & &&&while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
& & & & & & & &&&//设置PLL为系统时钟源
& & & & & & & &&&RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
& & & & & & & &&&//判断PLL是否是系统时钟
& & & & & & & &&&while(RCC_GetSYSCLKSource() != 0x08);
& & & &&&}
& & & &&&//开启TIM3的时钟
& & & &&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
& & & &&&//开启GPIOB的时钟和复用功能
& & & &&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
void GPIO_Configuration()
{
& & & &&&GPIO_InitTypeDef GPIO_InitS
& & & &&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开外设A,的时钟
& & & &&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
& & & &&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//IO口的方向
& & & &&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & &&&GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化外设0,1,2,3,6的端口
}
/**
&&* [url=home.php?mod=space&uid=247401]@brief[/url]&&Retargets the C library printf function to the USART.
&&* @param&&None
&&* @retval None
&&*/
PUTCHAR_PROTOTYPE
{
&&/* Place your implementation of fputc here */
&&/* e.g. write a character to the USART */
&&USART_SendData(EVAL_COM1, (uint8_t) ch);
&&/* Loop until the end of transmission */
&&while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
&&{
&&}
#ifdef&&USE_FULL_ASSERT
/**
&&* @brief&&Reports the name of the source file and the source line number
&&*& && && &where the assert_param error has occurred.
&&* @param&&file: pointer to the source file name
&&* @param&&line: assert_param error line source number
&&* @retval None
&&*/
void assert_failed(uint8_t* file, uint32_t line)
{
&&/* User can add his own implementation to report the file name and line number,
& &&&ex: printf(&Wrong parameters value: file %s on line %d\r\n&, file, line) */
&&/* Infinite loop */
&&while (1)
&&{
&&}
}
#endif
/**
&&* @}
&&*/
/**
&&* @}
&&*/
/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
复制代码楼主小白一只,只为潜心做毕业设计,,可能会有很多问题,虚心听取大家的指正,多谢各位了。。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
好像那个M在加一后,在下一个函数中引用时M还是保持着初始值0,
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:38.00
主题帖子积分
2、是不是定义了一个常量;
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
外出一下,下午回来回你们
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
mmuuss586 发表于
2、是不是定义了一个常量;
是全局变量,你看看那个M为什么在下面的函数应用中还是初值0
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
jiangsai 发表于
我在做小的毕业设计,没带系统。。并且只有设了一个全局变量,在main。c的开头设置的。。后面的函数要用 ...
你在main.c里面定义全局变量&&U8 m=0;
在其他文件中想用的话&&只要&&extern u8
还有 你确定 执行过m=m+1;那句了吗
己所不欲,勿施于人,争渡争渡
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
杨爱林林 发表于
你在main.c里面定义全局变量&&U8 m=0;
在其他文件中想用的话&&只要&&extern u8
反正按键按了,但m的值好像始终都是初值
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
杨爱林林 发表于
你在main.c里面定义全局变量&&U8 m=0;
在其他文件中想用的话&&只要&&extern u8
其实我觉得就是这个地方粗了问题
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
杨爱林林 发表于
你在main.c里面定义全局变量&&U8 m=0;
在其他文件中想用的话&&只要&&extern u8
我是不想多次使用调用,所以定义了个全局变量。。希望在下次用到M值时用到的是这次M变化之后的值,但实际没有达到那样子的效果。。请问下是什么原因呢
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
助理工程师, 积分 1748, 距离下一级还需 252 积分
你在m=m+1;设个断点吧
个人感觉 你程序没执行那步
己所不欲,勿施于人,争渡争渡
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
中级技术员, 积分 147, 距离下一级还需 153 积分
中级技术员, 积分 147, 距离下一级还需 153 积分
杨爱林林 发表于
你在m=m+1;设个断点吧
个人感觉 你程序没执行那步
如何设置断点呢,我先百度下。。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
技术奇才奖章
人才类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
技术导师奖章
人才类勋章
湍急之河流
发帖类勋章
突出贡献奖章
等级类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
核心会员奖章
等级类勋章
时间类勋章

我要回帖

更多关于 什么支点 的文章

 

随机推荐