I can endorse following the ISO12207 life-cycle model referred to above
Specifically, to answer the question though, the IEEE are the answer with IEEE Std 830-1998 - this is written with 12207 in mind
@Peter is quite dismissive of ISO12207, but for anything safety critical, documentation is paramount... but I accept for many applications it will be OTT.
Update 2012-11-12
Re-reading the question, ISO12207 is the Software Development Life-Cycle process model which covers all phases (as does CMMI)... the question specifically asks about writing a functional specification.
There is, naturally, an ISO standard for that too: ISO/IEC/IEEE 29148:2011 Systems and software engineering -- Life cycle processes -- Requirements engineering, quoting the Abstract:
ISO/IEC/IEEE 29148:2011 contains provisions for the processes and products related to the engineering of requirements for systems and software products and services throughout the life cycle. It defines the construct of a good requirement, provides attributes and characteristics of requirements, and discusses the iterative and recursive application of requirements processes throughout the life cycle.
ISO/IEC/IEEE 29148:2011 provides additional guidance in the application of requirements engineering and management processes for requirements-related activities in ISO/IEC 12207:2008 and ISO/IEC 15288:2008.
Information items applicable to the engineering of requirements and their content are defined. The content of ISO/IEC/IEEE 29148:2011 can be added to the existing set of requirements-related life cycle processes defined by ISO/IEC 12207:2008 or ISO/IEC 15288:2008, or can be used independently.